エクセルで作成した二つのDBがあります。それぞれ、列・行の数は異なるのですが、同じ名称の列(例えば郵便番号)を持っています。
この二つのファイルから、同じ列に同じ情報をもった行を取りだす、ということをしたいのですが、関数やマクロでの実現できる方法がございましたら、教えて頂けないでしょうか。
例:二つの住所録のようなファイルAとファイルBがあって、郵便番号が154-0001のデータ(行)を、別のファイルCに出力する。(また、ファイルC上では、各データがファイルAとファイルBのどちらから出力されたものかも、判別が付くように出力したい)
分かりにくいケースで大変恐縮ですが、ご存じの方がおりましたら、どうぞよろしくお願いいたします。
※エクセル2003を使用しています。
No.4ベストアンサー
- 回答日時:
最近、ほぼ同様の質問に3件回答しています。
以下の最初は例を示しただけですが、後の
二つはコードを提示しています。3番目は
No4の回答が最終形です。
http://oshiete1.watch.impress.co.jp/qa6401016.html
http://oshiete1.watch.impress.co.jp/qa6439871.html
http://oshiete1.watch.impress.co.jp/qa6441019.html
縦のものを横に、あるいは横のものを縦に、
あるいは、Keyワードで検索し、データを
加工し、移動、などいろいいろですが、
実際には基本的なことは同じで、いくつか
細かい調整を行なえばデータが取れます。
ただ、細かい調整というのが曲者ですが。
今回の質問は他より少し複雑ですが。一応
動作しています。
方法は他にもあります。データ量が尋常でなければ
他の手段もありますが、ベタな方法ですが、
一応これで確認してみてください。
データの由来を表示したいということで
一番最後の列にそれぞれのデータの由来を
入れます。
一応、検索はA列を対象にします。
Sub test1()
Dim wkA As Workbook
Dim wkB As Workbook
Dim wkC As Workbook
Dim LA As Long
Dim RA As Long
Dim LB As Long
Dim RB As Long
Dim RC As Long
Dim xA As Long
Dim yA As Long
Dim xB As Long
Dim yB As Long
'変数の初期化
RC = 0
'Bookの設定
Set wkA = Workbooks.Open(ThisWorkbook.Path & "\ファイルA.xls")
Set wkB = Workbooks.Open(ThisWorkbook.Path & "\ファイルB.xls")
Set wkC = ThisWorkbook
'ファイルA、Bの最終行、最終列の取得
xA = wkA.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '最終行
yA = wkA.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column '最終列
xB = wkB.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row '最終行
yB = wkB.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column '最終列
'ファイルAのデータを元にファイルBのデータを検索
'ファイルAのA列を検索
For RA = 1 To xA
'ファイルBのA列を検索
For RB = 1 To xB
'同じデータが見つかった場合の処理開始
If wkB.Sheets("Sheet1").Cells(RB, "A").Value = wkA.Sheets("Sheet1").Cells(RA, "A") Then
RC = RC + 1
For LA = 1 To yA
wkC.Sheets("Sheet1").Cells(RC, LA) = wkB.Sheets("Sheet1").Cells(RA, LA).Value
Next LA
'最後の列にA由来を表示
wkC.Sheets("Sheet1").Cells(RC, LA) = "A"
For LB = 1 To yB
wkC.Sheets("Sheet1").Cells(RC + 1, LB) = wkB.Sheets("Sheet1").Cells(RB, LB).Value
Next LB
'最後の列にB由来を表示
wkC.Sheets("Sheet1").Cells(RC + 1, LB) = "B"
RC = RC + 1
End If
Next RB
Next RA
End Sub
コードの張り間違いはないと思いますが、
一応動作を確認してください。
コードの内容の説明は最初に書いたリンク先の
2、3番目に書いてあります。内容的には
同じなのですが、もしわからないところが
あれば補足してください。
No.3
- 回答日時:
ブック間やシート間において、同じ値の行や列があるかどうか、
大量データを扱う上で、これは頻繁に出くわす処置です。
似たケースで困った質問事例もあります。
以後同じようなことが起きても対処できるようやり方を考え、覚えることです。
郵便番号ではできたが、列の違う電話も同じようにしたいがわからなかった、
これでは質問した意味がない。
No.2
- 回答日時:
>二つのファイルから、同じ列に同じ情報をもった行を取りだす、ということをしたい
>例:二つの住所録のようなファイルAとファイルBがあって、郵便番号が154-0001のデータ(行)を、別のファイルCに出力する。
上の説明は、2つの列に共通する種類の違う文字列を抽出したいということで、下の説明は、2つの列のデータから指定したデータ(同じデータが複数ある)を抽出したいということのように見えます。
2つの内容は全く別のことを説明しているように思いますが、このような場合は、元データのセル位置や集計後の結果の表示例など、実際のデータ例をあげて説明されたほうが皆さんから具体的な回答が得られやすいと思います。
ご助言、ありがとうございます。
今回、皆さんに頂いた回答を踏まえ、まず実践してみたいと思います。
その上で、また躓いてしまった時は、具体的な質問をいたします。
助かります。
No.1
- 回答日時:
1つの次元に双方あれば比較可能です。
シート1の分にはA
シート2の分にはB
合わせると
1540001A
1540001B
1540002A
や
1540001A
1540002A
や
1540001B
1540002A
1540001が何行あるか
どのシート分かで判断できます。
これは手間ではありますが難しくない作業でしょう。
これを自動にもできますがそういうことでしょうか。手間でもやってみてからマクロでいいと思います。
DBというのはアクセスとかか。アクセスあればクエリ操作で可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelインポート時の「実行時エ...
-
複数のCSVファイルを横に並べて...
-
エクセルの指数を無効にしたい
-
VBAでCSVの1行目だけを書き換え...
-
大量のCSVデータを1つのエ...
-
「ほかのアプリケーションを無...
-
EXCELにcsv形式の外部データを...
-
datファイル→csvファイル→datフ...
-
EXCELLの動きが遅い
-
二つのCSVファイルを照らし合わ...
-
【VBA初心者】同じフォルダ内の...
-
エクセル マクロ で助け下さい...
-
CSVデータから重複したデータを...
-
複数個のascファイルを1つ...
-
【エクセル VBA】CSVファイルの...
-
複数のデータ系列の線の太さを...
-
エクセル終了時の保存確認メッ...
-
エクセルでツールバーに「縮小...
-
フォルダ内の全ブックのシート...
-
VBAを一度起動するとずっと出て...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のCSVファイルを横に並べて...
-
エクセルの指数を無効にしたい
-
excelインポート時の「実行時エ...
-
VBAでCSVの1行目だけを書き換え...
-
大量のCSVデータを1つのエ...
-
EXCELにcsv形式の外部データを...
-
CSVファイルの結合(重複データ...
-
Excel VBAを使った複数のCSVフ...
-
複数のcsvファイルを1つのEXCEL...
-
「ほかのアプリケーションを無...
-
二つのCSVファイルを照らし合わ...
-
EXCELLの動きが遅い
-
同じ形のCSVファイルを複数同時...
-
datファイル→csvファイル→datフ...
-
【VBA初心者】同じフォルダ内の...
-
VBAでユーザーフォーム上に参照...
-
複数個のascファイルを1つ...
-
【エクセル VBA】CSVファイルの...
-
破損したExcelファイルの内容を...
-
エクセルファイルのコンペア
おすすめ情報