図の様に設定シートとSheet2があります。
今このプログラムを使用していますが、未登録の場合は空欄になってしまいます。
登録がない場合には未登録と表示させたいのですが、どの様に変更したらいいのか分かりません。
教えて頂きたいのですがよろしくお願い致します。
設定シートの範囲がA16~A25行目までの範囲と列はZ列までデーターは増やすことが出来ます
Sub TEST()
Dim s1 As Worksheet, s2 As Worksheet
Dim i As Long, f As Range, lc As Range
Dim c As Long, r As Long, d As String
Set s1 = Worksheets("設定")
Set s2 = Worksheets("Sheet2")
Set lc = s1.Cells.SpecialCells(xlLastCell)
c = lc.Column
r = lc.Row
For i = 2 To s2.Range("G2").End(xlDown).Row
Set f = s1.Range(s1.Cells(1, "B"), s1.Cells(r, c)).Find(What:=s2.Cells(i, "G").Value, LookAt:=xlWhole)
If Not (f Is Nothing) Then
s2.Cells(i, "F").Value = s1.Cells(f.Row, "B").Value
End If
Next i
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
>初心者レベルなのでコードが上手くかけません
ご提示のコードを作成したのは、他の人ということでしょうか?
作った方にお尋ねになるのが一番良いと思いますけれど。
>設定シートはA16~Z25までの範囲で(固定)使用したい
範囲固定なら、関数で処理してしまった方が簡単でしょう。
わけのわからないマクロを振り廻さずにすみますし、また、関数を設定しておくことで、いちいちマクロを実行しなくても、セルの値に応じて自動的に計算してくれます。
例えば、ご提示のF2セルに
=IF(G2="","",IFERROR(INDEX(設定!B:B,AGGREGATE(15,6,ROW(C$16:Z$25)/(設定!C$16:Z$25=G2),1)),"未登録"))
を入力して、あらかじめ充分に下方までフィルコピーしておくとか。
「未登録」を赤文字にしたいのなら、「条件付き書式」を設定しておくことで可能です。
No.1
- 回答日時:
こんばんは
>未登録の場合は空欄になってしまいます。
正確には、「該当する値が見つからない場合はなにもしない」ですね。
(F列に何か記入されていればそのまま)
>If Not (f Is Nothing) Then
>s2.Cells(i, "F").Value = s1.Cells(f.Row, "B").Value
>End If
の部分で、「該当するものがあれば~」という処理を行っていますので、
Else
該当がない場合の処理
End IF
となるように追加・修正してあげればご質問のようになります。
あるいは、ループ処理の最初に「未登録」を記入する処理をいれておけば、その後で該当する場合には上書きされるようになります。
(該当しなければ、「未登録」のままになります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Excel(エクセル) マクロで列を加えたら上手くいかなくなりました。 2 2022/05/23 17:59
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
win10で、正確な待ち時間の作り方
-
プログラム上のCPU稼働率低減に...
-
Excel VBAにて、2GB超の点群デ...
-
エクセルVBA 時間抜けの取得
-
VB.netを使ったシリアル通信の...
-
スーパーコンピューター 2位で...
-
WindowsMessage(ウィンドウメッ...
-
SQLの速度をあげるには・・・
-
Chat GPTに、課題として、二と...
-
基本情報技術者試験詳しい方へ...
-
Excel VBA での処理時間計測結...
-
VBA言語プログラミング
-
実行時のCPU使用率を増やしたい
-
gpuと並列処理を行うcpuの処理...
-
USBサブCPUは将来可能か
-
Typescript が必要な理由
-
絶対パスの取得について
-
VB 電卓 メモリー機能
-
処理速度向上のための小さな努力
-
符号付きにすべきか、符号なし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
win10で、正確な待ち時間の作り方
-
Excelでのセル内容の高速消去方法
-
SQLの速度をあげるには・・・
-
DoEvents関数って何?
-
小数点を含む数値かどうか判断...
-
Excel VBAにて、2GB超の点群デ...
-
ノットイコールを教えて下さい
-
Excel(VBA)でSetTimer関数を使...
-
Excel VBA での処理時間計測結...
-
Excel VBA データ削除の高速化
-
If Not c Is Nothing Then ~延...
-
実行時のCPU使用率を増やしたい
-
基本情報技術者試験詳しい方へ...
-
テキストファイルの空行をスキ...
-
プログラム上のCPU稼働率低減に...
-
ナップザック問題?をエクセル...
-
VBでの簡易電卓の作成(減算方...
-
絶対パスの取得について
-
VC++2010 GDIオブジェクトの解...
-
VB.NETにおける二値化処理の高速化
おすすめ情報
初心者レベルなのでコードが上手くかけません、教えていただきませんか
申し訳ございませんがよろしくお願い致します。
また、設定シートのA1から別の設定がり、A25以降にも別の設定があります。
その時に別の設定が読み込まれることがり、値が違うものになってしまいますので、
設定シートはA16~Z25までの範囲で(固定)使用したいのですがよろしくお願い致します。