- ベストアンサー
エクセル関数で困っています。
エクセル関数で困っています。 Aの表とBの表を統合したいのです。 ●A表 名前 身長 体重 田中 165 65 佐竹 167 45 伊藤 124 35 ● 名前 胴囲 座高 伊藤 70 60 佐竹 65 78 鈴木 62 42 これを名前をキーにして統合した表を作りたいのです 関数を教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 表Aに無くて表Bにある人の数が不明で数式で処理するには問題がある為VBAを使用します。 標準モジュールを追加して頂き、下記の様にしてください。 Option Explicit Sub Sample() Dim I As Integer Dim X As Integer Dim SkipFlg As Integer I = 2 '表Aの開始行 X = 12 '表Cの開始行 Application.ScreenUpdating = False Do While Range("A" & I).Value <> "" '表Aの最終行までループ Range("A" & X).Value = Range("A" & I).Value '名前 Range("B" & X).Value = Range("B" & I).Value '身長 Range("C" & X).Value = Range("C" & I).Value '体重 Range("D" & X).Value = 0 '胸囲 Range("E" & X).Value = 0 '座高 I = I + 1 X = X + 1 Loop I = 7 '表Bの開始行 Do While Range("A" & I).Value <> "" '表Bの最終行までループ SkipFlg = 0 X = 12 '表Cの開始行 Do While Range("A" & X).Value <> "" '表Cの最終行までループ If Range("A" & X).Value = Range("A" & I).Value Then '表Cに名前がある場合 Range("D" & X).Value = Range("B" & I).Value '胸囲 Range("E" & X).Value = Range("C" & I).Value '座高 SkipFlg = 1 'あった場合は追加登録判定を付ける Exit Do End If X = X + 1 Loop If SkipFlg <> 1 Then '追加登録判定を判断 '表Cに名前がない場合 Range("A" & X).Value = Range("A" & I).Value '名前 Range("B" & X).Value = 0 '身長 Range("C" & X).Value = 0 '体重 Range("D" & X).Value = Range("B" & I).Value '胸囲 Range("E" & X).Value = Range("C" & I).Value '座高 End If I = I + 1 Loop Application.ScreenUpdating = True End Sub 今回のコードを実行すると表Aと表Bを結合した表Cが作成されます。 (参考画像11行目の見出しは表示されません。)
その他の回答 (2)
- avanzato
- ベストアンサー率54% (52/95)
こんにちは。 表が同じシートにある場合で次の様なとき、 A列 B列 C列 1 名前 身長 体重 2 田中 165 65 3 佐竹 167 45 4 伊藤 124 35 6 名前 胸囲 座高 7 伊藤 70 60 8 佐竹 65 78 9 鈴木 62 42 この時、D2の数式を =VLOOKUP($A2,$A$7:$C$9,2,FALSE) E2の数式を =VLOOKUP($A2,$A$7:$C$9,3,FALSE) としてD2からE2を4行目までコピーしてください。 この例の場合、B表に田中さんが居ない為田中さんはエラーになります。 サンプルのため名前が無いのか分かりませんが意図的に名前が無いのなら別の方法が必要となります。
- masak2007j
- ベストアンサー率14% (2/14)
VLOOKUP関数を使ってみてはどうでせうか? ワークシートをまたげると思いますよ。
お礼
ありがとうございます。 早速試してみます
補足
大変わかりやすいアドバイスありがとうございます。 あと問題は ?統合された表で「田中」の胸囲 座高はエラーではなくセロ表示したいのです。 ?統合された表でA表には無かった「鈴木」の行が必要です 何かいい案ありますでしょうか・・・