イメージとしては
|A|B|C|D|E|
|:--|:--:|--:|
|x|y|key|a|a|
|x2|y2|key|b|b|
のような内容のシート1を
|A|B|C|D|E|
|:--|:--:|--:|
|key|v|w|
|key|v2|w2|
という内容のシート2で「key」をキーとして上書いて結合したいというものです。
結合後イメージとしては
A | B | C | D | E |
---|---|---|---|---|
x | y | key | v | w |
x2 | y2 | key | v2 | w2 |
このような感じです。
VLOOKUPを使って頑張ってみたのですがkeyを基準に全体を結合することができなかったので質問させていただきます。
宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
シートをテーブルとして扱い、SQLで処理することも可能です。
Excelの集計をSQLでおこなう方法。VLOOKUP()やSUBTOTAL()の限界を超えろ!!
投稿2019/01/10 09:03
総合スコア25173
0
Keyで検索して、値を「上書き」するのなら、
JOINとは性質の異なるものだと思います。
両方のテーブルに対して、
Dictionaryを作って Key,Item = シートのkey,行番号 の構造体を作成し、
シート2のKeyで回して、
シート1にあるKeyだったら、
シート2の該当行の値で、
シート1の該当行の値を上書き、
で処理できるかと。
もし、本来のJOIN同様、新しいテーブルを作成したいのであれば、
新規シートに、シート1のデータをコピーして、
上記の処理をした後に、シート2に無いKeyのデータ行を削除すれば
再現できそうかな
※1行ごとに削除すると、Dictionaryの行位置とズレるので、
該当箇所の全てをRange型変数にまとめておいて(UNIONを使用)、
全部を一括で削除するのが無難でしょうね。
投稿2019/01/10 09:35
総合スコア1175
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
キーとする項目(シート1のC列、シート2のA列)が2行とも"key"という値で同一なのですが、これは各行でそれぞれ異なる値(例えば"key1"と"key2")ですよね?
でなければキー項目でそれぞれ対応する1行とは結び付けられませんので、一応確認です。
あとVBAでの実装をお考えで、ご自身で作ってみたものの期待する動作とならない、ということですよね。
・どのようなコードを作成されたのか
・うまくいかないとは具体的にどういうことか(エラーが発生するのか、期待する結果が得られないのか、等)
というところを追記いただいた方が、より具体的で実のあるアドバイスができると思います。
やりたいことはVlookupで実現可能だと思います。
(不一致行の削除まではできないのでどちらかというとLEFT JOINでしょうか。)
ただしVlookupには使用にあたり、以下のような制限事項というか前提条件がある点に注意してください。
①マスタとなる範囲の左端列を検索キーとすること
⇒今回の場合シート2のA列~C列の左端列(つまりA列)がキー列となっていますので問題ありません。
②マスタとなる範囲が左端列(つまり検索キーの列)でソートされていること
⇒この条件が満たされていないと、範囲内に一致するキーが存在するのに見つけられない、という結果になる場合があります。
シート2が上記の条件を満たしていれば、
出力シートのD2セル:`=Vlookup(Sheet1!$C2, Sheet2!$A$2:$C$3, 2)` 出力シートのE2セル:`=Vlookup(Sheet1!$C2, Sheet2!$A$2:$C$3, 3)`
といった式で目的の結果を得ることができると思います。
ご自身で作成されたコードの提示がありませんのでサンプルコードの提供は控えさせていただきますが、VBAでWorksheetFunction.VLookup
を使った実装とする場合も同様です。
まずはSheet2が前提条件を満たしているかから、ご確認ください。
投稿2019/01/10 04:14
編集2019/01/10 04:24総合スコア3013
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
表を結合は、列の結合の繰り返しでしかないので、こちら→VLOOKUPを応用して、2つの表を結合するのように可能だと思います。
それともVLOOKUPが沢山あるせいで遅いということが仰りたいのでしょうか?
投稿2019/01/10 03:00
総合スコア12705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/10 03:13 編集
2019/01/10 03:22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/10 10:31