Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4160 / 76734 ←次へ | 前へ→

【78200】Re:エクセル内のデータ転送に関して
発言  β  - 16/5/24(火) 21:19 -

引用なし
パスワード
   ▼TODD さん:

まず col は、1行目の右端(XFD1)から左にみて最後にデータがある列番号。
つまり、このリストの一番右の列になりますね。

で、Range(Cells(1, col), Cells(Rows.Count, col).End(xlUp))

これは、その列の 1行目のセルからから、その列のデータ最終セルまでの領域。
かりに、2回目の場合、colが 9(つまりI列)で、I列のデータ最終行が20行目だとすると
この領域は I1:I20 になりますね。それを左に3つ広げますので I1:K20 つまり
2回目の領域全体になります。

そうしますと adr1 = .Cells(1).Address(False, True)

これは I1:K20の領域の最初のセル つまり I1。このアドレス文字列を取得しています。
この時、行は相対表示、列は絶対表示という指定(False,True) をしていますので
adr1 に格納される文字列は $I1 になります。

もう1つ adr0 文字列を説明しておきます。

adr0 = Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 3).Address

かりに A列データ最終行が 20 なら A1:C20 になるわけですが Address取得時の
相対、絶対 を省略しています。省略した場合絶対になります。
したがって $A$1:$C$20 になっています。

で、処理としては 『ある領域』に数式を埋め込んでいます。
この場合、ある領域 の左上隅にセットする数式を与えると、
シート上で右に、下にフィルコピーした場合に、式の中身が相対的に変化しますけど
それと同じ状態でセットされます。

ある領域 というのは
With Range(Cells(1, col), Cells(Rows.Count, col).End(xlUp)).Resize(, 3)
つまり、I1:K20 これの .Columns("B:C") これは2番目と3番目の列ということになりますので
J1:K20 ですね。

この左上隅のセル つまり J1 に

"=IFERROR(VLOOKUP(" & adr1 & "," & adr0 & ",COLUMN(B1),FALSE),""登録なし"")"

こんな式をセットしています。
変数 adr1 や adr2 を 上で説明した例になおしますと

=IFERROR(VLOOKUP($I1,$A$1:$C$20,COLUMN(B1),FALSE),"登録なし")

こうなります。
Columns(B1) って 2 ですから、この式は
=IFERROR(VLOOKUP($I1,$A$1:$C$20,2,FALSE),"登録なし")

これを右に(つまりK1)にフィルコピーすると
=IFERROR(VLOOKUP($I1,$A$1:$C$20,COLUMN(C1),FALSE),"登録なし")
つまり =IFERROR(VLOOKUP($I1,$A$1:$C$20,3,FALSE),"登録なし")
になりますね。

いずれにしても J1 に
=IFERROR(VLOOKUP($I1,$A$1:$C$20,COLUMN(B1),FALSE),"登録なし")
を入れて、これうぃK列にフィルコピーした後下にフィルコピーしてみてください。
どのように式が変化するか、よくわかると思います。

7 hits

【78185】エクセル内のデータ転送に関して TODD 16/5/20(金) 8:24 質問[未読]
【78186】Re:エクセル内のデータ転送に関して β 16/5/20(金) 9:31 発言[未読]
【78198】Re:エクセル内のデータ転送に関して TODD 16/5/24(火) 12:34 お礼[未読]
【78200】Re:エクセル内のデータ転送に関して β 16/5/24(火) 21:19 発言[未読]
【78205】Re:エクセル内のデータ転送に関して TODD 16/5/26(木) 1:28 お礼[未読]
【78206】Re:エクセル内のデータ転送に関して TODD 16/5/26(木) 4:29 お礼[未読]
【78207】Re:エクセル内のデータ転送に関して β 16/5/26(木) 8:03 発言[未読]
【78209】Re:エクセル内のデータ転送に関して TODD 16/5/26(木) 10:29 質問[未読]
【78187】Re:エクセル内のデータ転送に関して β 16/5/20(金) 9:39 発言[未読]
【78188】Re:エクセル内のデータ転送に関して β 16/5/20(金) 20:10 発言[未読]

4160 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free