[[20131212082209]] 『二つの条件 VBA』(yama) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『二つの条件 VBA』(yama)

 シート1
    A         B    C     D
   手配NO   品名 数量 完了日
 1 131212-01 aaa   100   12/30
 2 131212-01 bbb   100   12/20
 3 131212-01 ccc   150   12/17
 4 131211-01 bbb   90

 シート2
     A        B     C     D
   手配No    数量 完了日 品名
 1 131212-01              aaa
 2
 3
 4
 5

 このような状況の時に、シート2のB列とC列をシート1を参照し自動で入力したい。
 D列は事前に入力済みで、A列に手配NOを入力すると、B列、C列が入力される。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


シート1のA列とB列の組み合わせはユニーク(重複のないデータ)でしょうか。
また、日付はシリアル値(表示形式を数値にした時に数値表示)でしょうか。

上記二つの条件が満たされていれば、SUMIFS関数で計算できそうです。

[SUMIFS関数:MicroSoft Office On Line]
http://office.microsoft.com/ja-jp/excel-help/HA010342933.aspx 現在参照不可

シート1のC2数式例
=SUMIFS(Sheet2!$B$1:$B$20, Sheet2!$A$1:$A$20, $A2, Sheet2!$D$1:$D$20, $B2)
(みやほりん) 2013/12/12(木) 11:09


 みやほりんさん、感謝です。

 関数ですと入れておかなければならないので、可能であればマクロ等の処置を希望です。
 理由:シート2は抽出結果で行の増減があります。列はPまでで固定。

(yama) 2013/12/12(木) 11:15


そうですか。関数は入れておけるから便利なんですが。
マクロコードは現在検証環境がないのでご容赦下さい。

さて、私の問いかけが2点あります。
私ならコード内でSUMIFSワークシート関数を使いますし、
他の方がマクロを組む場合にも必要な情報だと思いますので。

(みやほりん) 2013/12/12(木) 11:26


 みやほりんさん。感謝です。

 >さて、私の問いかけが2点あります。
 すいません。回答させて頂きます。

 >シート1のA列とB列の組み合わせはユニーク(重複のないデータ)でしょうか。 
 重複は致しません。

 >また、日付はシリアル値(表示形式を数値にした時に数値表示)でしょうか。
 その通りです。

 シート2は入力後印刷する予定でして、関数が入っていると印刷ページを設定するのが
 面倒だったのでVBAとリクエストさせて頂いました。
 なので、品名がある行だけ、関数が入力されるようなのも問題なしです。
 また、印刷後入力データをクリアし、別の内容で再度抽出→印刷を繰り返します。
 *シート2は印刷用フォーマットのような物です。
(yama) 2013/12/12(木) 13:28

yamaさん

こんなのでいいでしょうか?

Sub Sample()
'

    Dim ShtNm1, ShtNm2, I, J
'
    ShtNm1 = "シート1"
    ShtNm2 = "シート2"

    For I = 2 To Sheets(ShtNm2).Range("A" & Rows.Count).End(xlUp).Row
        For J = 2 To Sheets(ShtNm1).Range("A" & Rows.Count).End(xlUp).Row
            If Sheets(ShtNm2).Cells(I, 1) = Sheets(ShtNm1).Cells(J, 1) Then
                If Sheets(ShtNm2).Cells(I, 4) = Sheets(ShtNm1).Cells(J, 2) Then
                    Sheets(ShtNm2).Cells(I, 2).Value = Sheets(ShtNm1).Cells(J, 3).Value
                    Sheets(ShtNm2).Cells(I, 3).Value = Sheets(ShtNm1).Cells(J, 4).Value
                End If
            End If
        Next J
    Next I

End Sub

(パオ〜〜ン) 2013/12/12(木) 14:59


 changeイベントの方が良いかもしれないですけど
Sub sample()
    With Sheets(2)
        If Application.CountA(.Range("A2:A100")) Then
            .Range("B2:C2").Resize(.Range("A" & Rows.Count).End(xlUp).Row - 1).Formula = _
            "=sumifs(sheet1!c:c,sheet1!$a:$a,$a2,sheet1!$b:$b,$d2)"
        End If
    End With
End Sub
 
(Jera) 2013/12/12(木) 16:03

 パオ〜〜ンさん、jeraさん、感謝です。
 今日は時間がなく、後日教わった内容で挑戦したいと思います。
(yama) 2013/12/12(木) 17:58

 遅くなりましたが、挑戦した結果ですが・・・。うまくいきませんでした。
 そこで伝え漏れをしておりましたので下記行があった場合どのようにすればよろしいでしょうか?

 シート1    ↓ここ追加
    A         B      C     D     E
   手配NO   計画No  品名 数量 完了日
 1 131212-01   12    aaa   100   12/30
 2 131212-01         bbb   100   12/20
 3 131212-01         ccc   150   12/17
 4 131211-01   102   bbb   90
 *新規入力は下に記入していきます。
 *計画Noは初めから決まっている時と、後から決まる場合があるので、空白が存在します。

 シート2    ↓ここ追加で「完了日」と「数量」が入れ替わります。
     A          B      C     D     E    ・・・
   手配No     計画No 完了日 数量 品名 ・・・
 1 131212-01                     aaa ・・・
 2
 3
 4
 5
 *E行以降をここではお伝えしておりませんが、シート3がありそのデータマスタからフィルタオプションで抽出しています。
  その時に、E行の入力されている行の分、A行には「手配No」を入るようにしてあります。
 *手配No毎の印刷作業の為、シート2のA行には違う「手配No」は今のところ入る予定はありあせん。

(yama) 2013/12/16(月) 08:58


yamaさん

シート1にもシート2にも計画Noという項目(列)があったのですね。
で、シート2には、手配Noと品名が入っているとき、マクロを動かして
計画No、完了日、数量を入れればいいのでしょうか?
であれば、

Sub Sample()
'

    Dim ShtNm1, ShtNm2, I, J
'
    ShtNm1 = "シート1"
    ShtNm2 = "シート2"
    For I = 2 To Sheets(ShtNm2).Range("A" & Rows.Count).End(xlUp).Row
        For J = 2 To Sheets(ShtNm1).Range("A" & Rows.Count).End(xlUp).Row
            If Sheets(ShtNm2).Cells(I, 1) = Sheets(ShtNm1).Cells(J, 1) Then   ’手配Noが 等しい
                If Sheets(ShtNm2).Cells(I, 5) = Sheets(ShtNm1).Cells(J, 3) Then  ’品名が等しい
                    Sheets(ShtNm2).Cells(I, 2).Value = Sheets(ShtNm1).Cells(J, 2).Value  ’計画Noを移送
                    Sheets(ShtNm2).Cells(I, 3).Value = Sheets(ShtNm1).Cells(J, 5).Value  ’完了日の移送
                    Sheets(ShtNm2).Cells(I, 4).Value = Sheets(ShtNm1).Cells(J, 4).Value  ’数量の移送
                End If
            End If
        Next J
    Next I
End Sub 
(パオ〜〜ン) 2013/12/16(月) 09:21

 パオ〜〜ンさん、さっそくのご連絡感謝です。

 希望しているものが出来上がりました。

 ありがとうございます。
(yama) 2013/12/16(月) 09:59

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.