- ベストアンサー
Excel で、二つの表をキーによって結合
(表A) みかん 4 柿 2 レモン 5 すだち 7 桃 11 (表B) 柿 12 レモン 14 みかん 5 キウィ 8 桃 9 のような二つの表を結合し、次のような表にするにはどうしたらいいでしょうか。全部でどれだけの種類の果物があるのかは未知です。また、例えばすだちはAのみに登場し、キウィはBのみに登場しますが、そのようなものが何種類あるのかも未知です。 . A B みかん 4 5 柿 2 12 レモン 5 0 キウィ 0 8 桃 11 9 すだち 7 0 なるべく、初心者にもできる方法を教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (7)
- msMike
- ベストアンサー率20% (364/1804)
[No.4補足]へのコメント、 そういうことは最初に仰るべきです。
- imogasi
- ベストアンサー率27% (4737/17069)
#5の質問者の補足について((6)に関して) <サンプルデータ> Sheet1 品物 個数 みかん 4 柿 2 レモン 5 すだち 7 桃 11 桃 12 リンゴ 7 ーー Sheet2 品物 個数2 柿 12 レモン 14 みかん 5 キウィ 8 桃 9 ーー 質問者的には個数列と個数列2とは同じ性格のデータと思うだろうが わざと別にしてタイトルとしている点に注意。 新規シートSheet3を作っておく ーー シートで、ALT+D+P(データーピボットに相当) 2シートを指定してピボット表を作る。 結果 ページ1 (すべて) 合計 / 値 列ラベル 行ラベル 個数 個数2 総計 キウィ 8 8 すだち 7 7 みかん 4 5 9 リンゴ 7 7 レモン 5 14 19 柿 2 12 14 桃 23 9 32 総計 48 48 96 ーー ・2期間のデータは同じ果物の行に別並列される ・1期間の中での同じ果物のデータ行は合算されてしまう。 ・第1期と第2期で果物名の出現・非出現はうまく集約されている。 と思うが、質問者のさらに細かい、データや、結果のニーズの事情への対応はできない場合もあると思うので、参考までに上げておきます。 一般には、本質問は、ピボット向きでないかもしれないと思う。
お礼
ありがとうございました。確かに実行できました。
- Chiquilin
- ベストアンサー率30% (94/306)
#2です。 > 元の表のデータのままで処理できたらもっといいのですが…。 できますけど 多分あなたには理解できないでしょう。 どうせ書いているピボットテーブルすら試してないんでしょ。 一応書いておきますが2つのテーブルを結合する接続を作成し てそれを 外部データとしてピボットテーブルにすればいいです。 最初に書こうか迷いましたが > なるべく、初心者にもできる方法を教えてください。 初心者に使わせようと思うなら 表の作り方を初心者まかせにし ては絶対にいけません。意味もなくシートを分けるのは初心者が 一番よくやる失敗で それをやったら初心者にはまともに扱えなく なります。
- imogasi
- ベストアンサー率27% (4737/17069)
処理ロジック(パターン)としては、マッチングやファイル結合などの問題と思う。 色々な処理方法があると思う。質問者だけでなく、将来にGoogleなどで、この質問を目にする人もあると思うので挙げてみる。 ACCESSがあればそれを使うのがよいと思う。 (1)手作業 (2)関数VLOOKUP ただ2件以上の果物を見つける(探す)ことは難しい (3)ACCESSで果物でファイル結合 (4)VBAでMatingプログラムを組む 両ファイルで果物でソートしておくと考えやすい。(略) (5)エクセルで「統合」 (6)エクセルでピ「ボットテーブル」 (7)ソート法+表の組み換え(下記) === 私のやってみた方法。VBAを使うが 表Aの最終行の次の行以下に、表Bを貼り付ける。手作業で行う。VBAでもできるが。 A列(果物)でソート。見出しのダブりなどは重複分は取り除く。 結果 キウィ 8 すだち 7 みかん 4 みかん 5 レモン 5 レモン 14 柿 2 柿 12 桃 11 桃 9 同じ果物は、隣り合う行に来る。 ーー これをVBAプログラムで(表の組み換え類型のプログラムです) Sub test01() lr = Range("A100000").End(xlUp).Row: MsgBox lr mae = Cells(1, "A") k = 1 j = 7 Cells(k, j) = mae j = j + 1 Cells(k, j) = Cells(1, "B") j = j + 1 For i = 2 To lr If Cells(i, "A") = mae Then '---この行は果物が同じ Cells(k, j) = Cells(i, "B") j = j + 1 Else '--この行で果物が変わった k = k + 1 j = 7 Cells(k, "G") = Cells(i, "A") j = j + 1 Cells(k, j) = Cells(i, "B") j = j + 1 End If mae = Cells(i, "A") Next i End Sub ーーー 結果 G1:I6 キウィ 8 すだち 7 みかん 4 5 レモン 5 14 柿 2 12 桃 11 9 同じ果物が3度以上出現してもOKだろう。 上記では元の出現順序がソートによって崩れるが、手を加えれば復元できる。
お礼
ありがとうございます。初心者向けの方法として、(5)は既にご回答がありましたが、(6)は具体的にどんな方法でしょうか。
- msMike
- ベストアンサー率20% (364/1804)
》 初心者にもできる方法を教えてください 最終表の列Aの、上から並んだ みかん、柿、レモン、キウィ、桃、すだち の[並べ替え]の規則を、「初心者にも」分かるように書くべきかと。
補足
規則はありません。順序に意味はありません。
- tsubu-yuki
- ベストアンサー率46% (179/386)
お二人、優しいなぁ・・と思いながら眺めていました(笑)。 > 初心者にもできる方法を 「初心者」の定義も人それぞれです。 技術として一番簡単なのは「手作業」で入力ですよ。 且つ一番「初心者」向きです。 なので、 「手作業でやれば良いでしょ、そのくらいの数」 が本来の回答です。 が、もうひとつ他の手段として、 「初心者」様が一歩ステップアップする際に 必ず通ってほしい「フィルター機能」を使った手順をざっと。 併せてエクセルの「脱・初心者」必須アイテムである 「VLOOKUP」関数を使います。 さらに、関数のエラー処理に覚えておきたい 「IFERROR」関数も使います。 ※ただし、詳細は自力で調べて覚えるほうが覚えやすいので、 わからなければ別途お調べくださいませ。 前提としてSheet1のA1:B5に表「A」、D1:E5に表「B」があるものとします。 ・表Aと表Bの「項目名」を縦にずらっと並べる ※重複しているものとか何も気にせずに、 新しいシートにでもコピー貼り付けしてやってください。 とりあえず、新しいシート「Sheet2」を作って、 A1から下に並べた、と仮定して進みますよ。 ・「項目名」を羅列した範囲(A1:A10)を選択し、 リボンの「データ」タブから、並べ替えとフィルターの「詳細設定」 ・フィルターオプションの設定ダイアログ内の 「指定した範囲」を選択(●をつける) 「リスト範囲」には「$A$1:$A$10」が入っているはず 「抽出範囲」に何もデータが入っていない適当なセルを指定 ※「Sheet2!$C$2」とでもしてやってください。 「重複するレコードは無視する」にチェック 以上を設定してOKすると、C2:C8に重複しない一覧が出来ているはず。 ・Sheet2のD1セルに「A」、E1セルに「B」を入力(任意) ・Sheet2の D2セル:=IFERROR(VLOOKUP(C2,Sheet1!$A$1:$B$5,2,FALSE),0) E2セル:=IFERROR(VLOOKUP(C2,Sheet1!$D$1:$E$5,2,FALSE),0) ・必要分、行方向へフィル 以上、完成です。
補足
ご回答ありがとうございました。説明のため簡単な例をあげましたが、実際のデータは千単位の個数があって、手作業ではとても追いつかないのです。また、私自身はExcelはあまり使わないものの他言語のプログラミング経験があり関数は理解できますが、初心者に教えなければならないため、より簡単な方法を探しております。
- Chiquilin
- ベストアンサー率30% (94/306)
区分列を追加して一ヶ所に集めてやれば ......A.......B........C 1..区分..品目...個数 2....A...みかん....4 3....A......柿........2 4....A...レモン....5 5....A...すだち....7 6....A......桃.......11 7....B......柿.......12 8....B...レモン...14 9....B...みかん.....5 10..B...キウィ.....8 11..B......桃..........9 ピボットテーブルで ............E...........F.....G.....H 1...合計 / 個数...列ラベル 2...行ラベル......A......B...総計 3.....みかん........4......5.......9 4.........柿...........2.....12....14 5.....レモン........5....14.....19 6.....キウィ........0......8.......8 7.........桃..........11......9.....20 8.....すだち........7......0.......7 9........総計.......29....48.....77 こうなるでしょう。
お礼
ご回答ありがとうございます。元の表のデータのままで処理できたらもっといいのですが…。
お礼
ありがとうございました。確かにこの方法が簡単そうです。