[[20230125161909]] 『3シートの情報を1つの表にまとめたい』(rosasc) ページの最後に飛ぶ

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

 

『3シートの情報を1つの表にまとめたい』(rosasc)

お世話になります。

シートA

 1 \100
 2 \200
 3 \300

シートB

 2 \100
 3 \100
 4 \100

シートC

 3 \200
 5 \200
 6 \200

という情報から、以下のような表にまとめたいと思っております。

     A    B    C
 1 \100
 2 \200 \100
 3 \300 \100 \200
 4      \100
 5           \200
 6           \200

実際はデータが数百ある状態です。
VLOOKUPを使えればと思いましたが、そもそも「3シートで存在する数字一覧」を出す方法が分からないでいます。

この表を作るための手順や関数を、ご教授願えれば幸いです。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 1、2、3…は行番号ではないということでしょうか?
(コナミ) 2023/01/25(水) 16:41:24

お世話になります。
1、2、3・・・は、行番号ではなく、個人コードと捉えください。

1 山田さん
2 佐藤さん
3 鈴木さん

といった形で、個人を区別するためのコードになります。
引き続き、ご回答宜しくお願いいたします。
(rosasc) 2023/01/25(水) 16:45:16


ブックの最後尾に新しくシートを作成(仮にSheet4)して、
A列2行目以降に必要なコードを記入(ここでは1〜6?)する。

各シートのデータは1行目からでA列にコード、B列にデータがあるものと前提して

Sub Sample()

    Dim SumWs As Worksheet, ws As Worksheet
    Dim r As Long, EndRow As Long, TargetRow As Long

    Set SumWs = Worksheets("Sheet4")

    For Each ws In Worksheets
        If ws.Name = SumWs.Name Then Exit For
        EndRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

        For r = 1 To EndRow
            TargetRow = Application.WorksheetFunction.Match(ws.Cells(r, "A").Value, SumWs.Range("A:A"), 0)
            SumWs.Cells(TargetRow, ws.Index + 1).Value = ws.Cells(r, "B").Value
        Next r
    Next ws
End Sub

を実行したらSheet4に集計されます。
もし集計するデータの位置の前提が違えば自分で修正してください。

(ngk) 2023/01/25(水) 17:33:17


 各シートのデータが最大1000行まであるとして。
 シートDのB1セルから右にシート名を入力。
 シートDのA2セルに
 =UNIQUE(VSTACK(FILTER(シートA!A1:A1000,シートA!A1:A1000<>""),FILTER(シートB!A1:A1000,シートB!A1:A1000<>""),FILTER(シートC!A1:A1000,シートC!A1:A1000<>"")))
 と入力。

 B2セルに
 =IF(A2:A1000="","",SUMIF(INDIRECT(B1:D1&"!A:A"),A2:A1000,INDIRECT(B1:D1&"!B:B")))
 と入力ではどうだろうか?
 なお、対応する値がないところは0と表示される。
(ねむねむ) 2023/01/25(水) 19:20:40

 金額の列にそれぞれ違う項目名を入れて
 統合機能を使うというのはどうでしょう?
(コナミ) 2023/01/25(水) 19:43:27

コメント返信:

[ 一覧(最新更新順) ]


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