Excel2003を使用しています。
2つのシート間の特定の範囲内で、条件に合うデータを転記したいのですが…
Sheet1(A1:C41) ← 一定範囲
Sheet2(選択範囲) ← 都度、選択範囲取得
Sheet2の選択範囲内で、A列とB列の値が、Sheet1のA列とB列のそれぞれの値と一致した場合、Sheet1のC列の値をSheet2のE列に転記したいのですが、こういう場合、コードはどのように書いたらいいでしょうか?
条件に合ったものを順に転記していくコードは書いたことがあるのですが、特定の範囲内ということや、転記する場所が指定されたりしていて、つまづいています。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
例えばこんなマクロでもできます
Sub Macro1()
Dim idx As Integer
Dim fAdr As String
Dim rng As Range
If TypeName(Selection) = "Range" Then
With Selection
For idx = .Row To .Row + .Rows.Count
fAdr = ""
Set rng = Sheets("Sheet1").Range("A1:A41").Find( _
What:=Cells(idx, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
fAdr = rng.Address
Do
If rng.Offset(0, 1).Value = Cells(idx, 2).Value Then
Cells(idx, 5).Value = rng.Offset(0, 2).Value
Exit Do
End If
Set rng = Sheets("Sheet1").Range("A1:A41").FindNext(rng)
Loop Until fAdr = rng.Address
End If
Next idx
End With
End If
End Sub
回答ありがとうございます。
教えていただいたマクロで試してみたところ、無事処理することができました。
質問文では、Sheet1の範囲を一定にしていましたが、これをSheet2のように、都度、選択範囲を取得するようにもできるでしょうか?
>Set rng = Sheets("Sheet1").Range("A1:A41").~
↓
>Set rng = Sheets("Sheet1").Range(Cells(1, 1), Cells(i, 1)).~
のように書き換えてみたのですが、『Rangeメゾットは失敗しました』
というエラーメッセージが出ました。この部分以外にも変更しなければいけないのでしょうか…。
よろしければ、教えていただけると助かります。
No.2
- 回答日時:
#01です
>Set rng = Sheets("Sheet1").Range(Cells(1, 1), Cells(i, 1)).~
変数iが何を示すか補足からは分かりませんが、これはダメでしょう
おそらくSheet2がアクティブになっていると思いますので
Cells(1, 1)
は Sheets("Sheet2").Cells(1, 1) を意味します。
Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(i, 1)).~
にしなくてはならないと思いますよ。
再度の回答ありがとうございます。
説明不足にも関わらず、適格なアドバイスをいただいたおかげで、うまくいきました。
おっしゃるとおり、Sheet2がアクティブになっていたので、Rangeの後の括弧内で、Sheet1を指定してあげればよかったのですね。
説明されれば、『あ、そっか…』という感じですが、こんなことにも気づかないなんて、お恥ずかしい限りです(^^ゞ
当初、考えていたものより使いやすいものができて、満足しています。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userform転記のみ編集可 1 2023/06/29 11:03
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) A列の最終行に合わせて範囲をコピー 2 2022/09/04 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
尿検査の前日は自慰控えたほう...
-
精子が黄色?
-
中出しをするとお腹が痛い・・・。
-
EXCELで条件付き書式で空白セル...
-
excelでsin二乗のやり方を教え...
-
これって喉仏ですか? 私は女性...
-
口の中に黒い血の塊
-
納豆食べた後の尿の納豆臭は何故?
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
筋トレするとチンコが縮んじゃ...
-
変な話しになります。尿検査で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報