セル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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
ある列のセルに特定の文字が入っていたら他のセルに決まった文字を入れる
Word(ワード)
-
データが入力されている隣のセルに当日日付と時刻を入力するExcel VBAプログラム
Visual Basic(VBA)
-
-
4
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
5
エクセルVBAで、値が入っている最終行の、右隣の値をコピーして、別のセルに貼り付けるコード
Excel(エクセル)
-
6
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
7
A列に文字列または数字を入力したら隣接するD列に今日の日付が入るようにしたいです
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
エクセル マクロで数値が変った時行挿入できますか
Excel(エクセル)
-
10
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
11
未記入がある場合はマクロを実行させない方法
その他(Microsoft Office)
-
12
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
13
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
14
VBAを使用してセルに値を入力した時、左隣のセルに自動で値が入力されるようにしたい。
Excel(エクセル)
-
15
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
アクティブになっている行をマ...
-
Excel グラフのプロットからデ...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセル マクロ オートフィ...
-
特定の文字がある行以外を削除...
-
エクセルのマクロで意図しない...
-
【Excel関数】UNIQUE関数で"0"...
-
結合されたセルをプルダウンの...
-
VBAで色の付いているセルの行削除
-
AのセルとB行を比較して、一致...
-
excelのデータで色つき行の抽出...
-
Excel ウインドウ枠の固定をす...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
セルの色によって条件文をつけ...
-
エクセルVBA 最終行を選んで並...
-
エクセル 時間の表示形式AM/PM...
-
Excelのフィルター後の一番上の...
-
Excel 空白行を上に詰めるマクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の文字列が入っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
特定の文字がある行以外を削除...
-
エクセル マクロ オートフィ...
-
Excel グラフのプロットからデ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロで数値が変っ...
-
VBAで色の付いているセルの行削除
-
エクセル 上下で列幅を変えるには
-
結合されたセルをプルダウンの...
-
excelのデータで色つき行の抽出...
-
AのセルとB行を比較して、一致...
-
excel 小さすぎて見えないセル...
-
罫線の斜線を自動で引くマクロ
-
エクセルのセルに指定画像(.jpg...
-
エクセル 時間の表示形式AM/PM...
-
エクセルVBA 最終行を選んで並...
-
Excelでカタカナ・ひらがな・英...
-
Excelのフィルター後の一番上の...
-
エクセルVBA:データ端に画...
おすすめ情報
なお、一度入力した文字を消す時もあります。
その時は隣のセルは空白にしたいです。