別シートにある住所録のデータ内容を、別のシートの同一人物の列に自動で張り付けたい場合どのような数式を使えばいいでしょうか?
色々検索したのですが、上手くいくものがありませんでした。
sheet1
A B C D E F G
物件名 貸主名 郵便番号 住所1 住所2
sheet2
A B C D E
物件名 郵便番号 住所1 住所2 貸主名
◆シート1のA・BにはデータがありますがC・D・Eは空欄です。
F以降にはデータが入っています。
◆シート2のA・B・C・D・Eにはデータがあります。
<やりたい事>
シート1とシート2の入力順はバラバラで、シート1の郵便番号・住所1・住所2にシート2から
物件名もしくは貸主名で照合して自動で対象セルを張り付けたいのですが、VLOOKUPもしくは
マクロで一括してできるでしょうか?
よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
vba を使えばいろいろ手が考えられますが(ちなみにvbaを使う場合はセルごとに処理するのでなく、一旦配列に入れて処理しないと速度が桁違いに(下手すると2桁位は)遅くなります。
エクセルの関数でも出来そうですので(エクセルの組み込み関数は早い)ちょっと提案しましょう。
まず、シート2の貸主名のデータに重複がないとします。普通は重複があるといけないと思いますのでこの考えで問題ないと思います。
この貸主名の入力されている行が分かれば、その行の郵便番号や住所を拾ってくるだけですが、Vlookup関数は、検索するデータが範囲の先頭列に無ければいけないので今回のシート2の順番では使えません。
この場合は、match 関数で行で調べてindex関数で範囲のその行の希望の列を拾ってくれば良いです。
実際はひとつの式にまとめても良いですが、考え方を示すために別々の式で示します
sheet2のデータ範囲を仮にA2:E1000 とします。(1行目はタイトルですね)
sheet1の方は1行目がタイトルで2行目からデータが始まっているとします。
仮にH列に貸主のデータが入っている行を調べるmatch関数を入れることにします
H2のセルの式
=match(B2,sheet2!$E$2:$E$1000,0)
3番目の引数を0にしないと、sheet2の方は貸主名でソートしないといけなくなります
これでH2に貸主名の行が出てくるので(範囲が2行目からなので行数としては実際の行数より1少ない値です)idex関数で必要な値を引っ張ってくるだけです。
郵便番号の C2セルには
=index(sheet2!$A$2:$ES$1000,$H2,2)
検索の範囲は、絶対参照ですが、行の値のセルへの参照はコピーする都合で列のHだけ絶対参照にしておきます。
これを住所1、住所2にコピーすると、3番目の引数の列の値が郵便番号の2のままですから、3と4に直せばOKです。
範囲指定の方法はもっと範囲を絞っても構いませんが(3番目の引数も直す)内部では配列で処理しているので範囲が広くても実行速度はほとんど変わらないようです。
慣れないうちはmatch関数の列を別にに設けた方が分かり易いですが、これをIndex関数に組込めばmatch列は不要になります。
たとえば
=Index(sheet2!$A$2:$ES$1000,Match(B2,sheet2!$E$2:$E$1000,0),2)
範囲の指定は名前と言う機能を使いと可読性は上がりますが、範囲を広げる時は名前の管理で行うなど、ちょっと別のセンスが必要となります。
matchで拾ってくるのですね。
VLOOKUPしか浮かばなかったので、目から鱗です。
色々な拾い方ができますね。とても参考になりました。
他の帳票でも使えそうです!
ありがとうございました。
No.4
- 回答日時:
すいません、「元行」と「先行」が入れ違っていた所が有りました。
以下の様に修正してください。Sub Sample()
Dim 元行 As Long
Dim 先行 As Long
Sheets("Sheet1").Select
For 先行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For 元行 = 1 To Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
If Cells(先行, 1).Value = Sheets("Sheet2").Cells(元行, 1).Value Then
If Cells(先行, 2).Value = Sheets("Sheet2").Cells(元行, 5).Value Then
Cells(先行, 3).Value = Sheets("Sheet2").Cells(元行, 2).Value
Cells(先行, 4).Value = Sheets("Sheet2").Cells(元行, 3).Value
Cells(先行, 5).Value = Sheets("Sheet2").Cells(元行, 4).Value
End If
End If
Next
Next
End Sub
No.3
- 回答日時:
「Cells(Rows.Count, 1).End(xlUp).Row」は1列目(A列)の最後の行番号になります。
たとえば E列(5列目) の場合は「Cells(Rows.Count, 5).End(xlUp).Row」になります。
後は判ると思いますので説明は省きますが、質問いただければ説明します。
No.2
- 回答日時:
とりあえず、かんたんな「For … Next」を使ったもの
Sub Sample()
Dim 元行 As Long
Dim 先行 As Long
Sheets("Sheet1").Select
For 先行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For 元行 = 1 To Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
If Cells(元行, 1).Value = Sheets("Sheet2").Cells(先行, 1).Value Then
If Cells(元行, 2).Value = Sheets("Sheet2").Cells(先行, 5).Value Then
Cells(元行, 3).Value = Sheets("Sheet2").Cells(先行, 2).Value
Cells(元行, 4).Value = Sheets("Sheet2").Cells(先行, 3).Value
Cells(元行, 5).Value = Sheets("Sheet2").Cells(先行, 4).Value
End If
End If
Next
Next
End Sub
No.1
- 回答日時:
「物件名もしくは貸主名」で良いのですか?「物件名」は重複は無いと思いますが「貸主名」は重複がありそうです。
両方が一致したものとした方が良いのでは?ちなみに、郵便番号、住所1、住所2が、貸主様の物ならば問題はありませんが!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
エクセル 入力があった場合のみ...
-
エクセルの関数
-
Excelでの勤怠表の関数を教えて...
-
【Excel】効率的な関数式の組み...
-
エクセルの数式について教えて...
-
Excelの更新日時が自動で更新さ...
-
考えた式の戻り値が期待通りに...
-
(マクロ)参照渡しにて、違う...
-
if関数。半角文字や全角文字で...
-
エクセルを使ってQRコードを作...
-
FからI列で期限切れ及び期限7日...
-
(マクロ)値を返す時は subで...
-
ExcelやLibreOffice Calcの関数...
-
エクセルでファイルの最終更新...
-
EXCELの散布図で日付が1900年に...
-
エクセルについての質問です。 ...
-
エクセルの数式バーのフォント...
-
【Excel】 1つのセルの日にちを...
-
Excelの計算が合いません。 諸...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
エクセルデーターから必要な項...
-
エクセルでファイルの最終更新...
-
複数のテキストファイルをexcel...
-
Excelの複数条件の関数
-
【マクロ】ファイル名の一括変...
-
EXCELの散布図で日付が1900年に...
-
マクロの処理が遅くなった
-
Excelの時刻の不思議
-
エクセルでの2項目比較および...
-
Excelマクロで空白セルを詰めて...
-
エクセルの数式バーのフォント...
-
ExcelでASCを使って全角を半角...
-
エクセルで80万行、50列位のデ...
-
今まで文字化けなく開けていたc...
-
エクセルのことで教えてくださ...
-
エクセルVBA 月の中で、月~土...
-
Excelでの表の作り方
-
Excel セルにおけるフォント設...
-
エクセルの質問です。 F列からL...
おすすめ情報
ありがとうございます。
出来れば物件名と貸主名両方が一致した方が誤りがないと思うのでそれで出来ればベストです。
これは表の一部でまだ物件住所も物件の郵便番号も同じよう入力したいと思っています。
今後表の変更がありそうなので今回教えて頂いたものを基本に作ろうと思っています。