
セルC3から最終行(LASTROWという変数に格納されています)までの間に
何らかの文字が入力されたら、隣り合うD列の同じ行に下記数式を入力させたいです。
=IFERROR(VLOOKUP(C3,THEMA!A:B,2,FALSE),"")
※上記数式内の「C3」は入力されたセルの行に応じて変更させたいです。
例えばC5に文字が入力されたら、D5には=IFERROR(VLOOKUP(C5,THEMA!A:B,2,FALSE),"")
VBA初心者です。
ネットでセルに文字が入力されたら実行させるマクロ例を見て作ろうと思ったのですが、
下記????部分にどのような構文を用いればいいのかわからず質問させて頂きました。
Private Sub Worksheet_Change(ByVal Target As Range)
LASTROW = Cells(Rows.Count, "A").End(xlUp).Row
If Target.Column = 3 Then
If Target.Row >= 3 And Target.Row <= LASTROW Then
????
End If
End If
End Sub
VBA使うのであればわざわざVLOOKUP使わなくても・・・と言う場合は数式には
拘りありません。VLOOKUPと同等の処理ができればOKですのでその点もご教授
お願いいたします。
No.4ベストアンサー
- 回答日時:
続けてお邪魔します。
結局、C・L列で同様の動きにしたい!というコトですね。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, c As Range
If Intersect(Target, Range("C:C,L:L")) Is Nothing Then Exit Sub
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If Target.Count > 1000 Then Exit Sub
For Each c In Target
With c
If .Row > 2 And .Row <= lastRow Then
If .Value <> "" Then
If .Column = 3 Then
.Offset(, 1).Formula = "=IFERROR(VLOOKUP(RC[-1],THEMA!C[-3]:C[-2],2,False),"""")"
Else
.Offset(, 1).Formula = "L列の数式"
End If
Else
.Offset(, 1).ClearContents
End If
End If
End With
Next c
End Sub
※ L列の数式が判らないので
その部分はご自身で数式を入れてください。m(_ _)m
No.3
- 回答日時:
No.2です。
>複数この処理を実施したい場合は・・・
C列複数セルに対応したい!というコトですね。
↓のコードに変更してみてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, c As Range
If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For Each c In Target
With c
If .Row > 2 And .Row <= lastRow Then
If .Value <> "" Then
.Offset(, 1).Formula = "=IFERROR(VLOOKUP(RC[-1],THEMA!C[-3]:C[-2],2,False),"""")"
Else
.Offset(, 1).ClearContents
End If
End If
End With
Next c
End Sub
※ 注意点として
C列をループさせていますので、
極端に多くの行数(例えば列全体など)を一気に消去した場合などは
「応答なし」になってしまうと思います。
セル数の制限などを追加すれば大丈夫です。
たとえば1000セルに限定する場合は
>lastRow = Cells(Rows.Count, "A").End(xlUp).Row
の次に
>If Target.Count > 1000 Then Exit Sub
の1行を追加しておけば列全体を消去しても大丈夫だと思います。
ただ、この場合はD列は空白に見えても数式はそのまま残っています。m(_ _)m
ありがとうざいます。
複数同時に消しても動作しました。
私の言葉足らずですみません。
C列以外(例えばL列)も同じように隣り合うセルに数式(数式は少し変わりますVLOOKUP参照の
シート名が異なる)を入力したい場合はどのように表記すれば良いかというのが№2へのコメントでした。
もしよろしければご教授頂けると助かります。
No.2
- 回答日時:
こんばんは!
今回の場合はR1C1形式の方が対応が簡単だと思います。
一例です。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long
If Intersect(Target, Range("C:C")) Is Nothing Or Target.Count > 1 Then Exit Sub
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Target
If .Row > 2 And .Row <= lastRow Then
If .Value <> "" Then
.Offset(, 1).Formula = "=IFERROR(VLOOKUP(RC[-1],THEMA!C[-3]:C[-2],2,False),"""")"
Else
.Offset(, 1).ClearContents
End If
End If
End With
End Sub
>なお、一度入力した文字を消す時もあります。
>その時は隣のセルは空白にしたいです。
というコトですが、数式そのものでで「空白」になりますが
とりあえず数式も消去するコードにしています。
(1セルずつ対応するコードのためにC列データを複数行を一気に消去しても対応していません。)
ありがとうございました。
複数この処理を実施したい場合は下記のように追加していけば良いでしょうか?
二つ目のブロックでブレークしても止まらなかったのに処理されていたので心配になりました。
※文字数制限のため数式部分を@@にしてます。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long
If Intersect(Target, Range("C:C")) Is Nothing Or Target.Count > 1 Then Exit Sub
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Target
If .Row > 2 And .Row <= lastRow Then
If .Value <> "" Then
.Offset(, 1).Formula = "@@"
Else
.Offset(, 1).ClearContents
End If
End If
End With
If Intersect(Target, Range("L:L")) Is Nothing Or Target.Count > 1 Then Exit Sub
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Target
If .Row > 2 And .Row <= lastRow Then
If .Value <> "" Then
.Offset(, 1).Formula = "@@"
Else
.Offset(, 1).ClearContents
End If
End If
End With
End Sub
No.1
- 回答日時:
>までの間に
その各行についてですね、その中のいずれかの行のセルに文字入力があれば、そのセルの隣のセルのみに数式を・・・・・と解釈します
文字入力する列はc列とすれば、となりのd列の各行に関数で処理すれば。
C4に、If(C3=””,””,IFERROR(VLOOKUP(C5,THEMA!A:B,2,FALSE),""))
ただし?、です。
ありがとうございます。
説明不足すみません。
現状関数を埋め込んでいますが、行数が多いため関数を埋め込んでおくとファイルサイズが
大きくなるので関数を止めてマクロで処理したかったのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002
Visual Basic(VBA)
-
データが入力されている隣のセルに当日日付と時刻を入力するExcel VBAプログラム
Visual Basic(VBA)
-
vba:特定のセルに入力したと同時に隣のセルの値を特定のセルの下の行に自動入力したい_No.2
Excel(エクセル)
-
-
4
エクセルVBAで、値が入っている最終行の、右隣の値をコピーして、別のセルに貼り付けるコード
Excel(エクセル)
-
5
隣のセルに入力したら自動的に数式が入ったセルが入力されてたのですが・・
Excel(エクセル)
-
6
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
9
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
10
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
11
VBAで特定の文字を探して隣のセルに色を付けたい
Excel(エクセル)
-
12
ExcelのVBAで連番を振る。
Excel(エクセル)
-
13
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
14
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
15
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
16
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
17
リンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)
Excel(エクセル)
-
18
ある列のセルに特定の文字が入っていたら他のセルに決まった文字を入れる
Word(ワード)
-
19
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
エクセルのセルに指定画像(.jpg...
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
エクセルで特定の文字列が入っ...
-
電話番号の入力方式が違うデー...
-
エクセルマクロで偶数行(又は...
-
EXCELマクロを使い、空白行では...
-
excelのデータで色つき行の抽出...
-
連続データが入った行の一番右...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルVBA 最終行を選んで並...
-
エクセル 時間の表示形式AM/PM...
-
A1に入力された文字列と同じ文...
-
アクティブになっている行をマ...
-
エクセル 上下で列幅を変えるには
-
Excelでカタカナ・ひらがな・英...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
特定の文字がある行以外を削除...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excel グラフのプロットからデ...
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
結合されたセルをプルダウンの...
-
Excelのフィルター後の一番上の...
-
excel 小さすぎて見えないセル...
-
エクセル 上下で列幅を変えるには
-
エクセルマクロで偶数行(又は...
-
Excel ウインドウ枠の固定をす...
-
EXCELで最後の行を固定
-
VBAで色の付いているセルの行削除
-
連続データが入った行の一番右...
-
エクセル 時間の表示形式AM/PM...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA 最終行を選んで並...
-
アクティブになっている行をマ...
おすすめ情報
なお、一度入力した文字を消す時もあります。
その時は隣のセルは空白にしたいです。