初心者です。コードの書き方が分からず困っています。教えてもらえますか?
(1)"リスト"に下記例の通り、2列にデータが並んでいる。
A列2行目には品番、B列2行目には部品と記載されている。
(例)
品番 記載内容
11111-1111 部品
11111-1112 部品
11111-1113 部品
(2)別シート"終了品"のD列の3行目~は、品番が"リスト"とは
異なる順序で並んでいる(もしくは存在しない)。また同一品番が複数存在するこ
ともある。
この品番のZ列に部品とセットしたい。データ数は日ごとに変動するが多くて200
行。
D列・・・・・・・・・・・・Z列
品番
11111-1113 部品
11111-1112 部品
44444-1112 空欄にしたい
見様見真似で作成してみましたが、うまくいきません。。
Sub 部品記載()
Dim r As Range
With Worksheets("終了品")
.Columns(2).ClearContents
Set r = Range("D200").End(xlUp).Offset(0, 23)
.Range("D3", r) = "=IF(ISERROR(VLOOKUP(A2,リスト!$A$2:$B$4,2,FALSE))" &
_
",""""," & "VLOOKUP(A2,リスト!$A$2:$B
$4,2,FALSE))"
End With
End Sub
よろしくお願い致します。
No.7
- 回答日時:
少し割り込みさせていただきますが、質問者さんは、この回答に関して、一言も答えていないのですね。
'//標準モジュール
Sub 部品記載r()
Dim Rng As Range
With Worksheets("終了品")
.Columns(26).ClearContents 'Z列をクリアする
On Error Resume Next 'SpecialCells のエラーに対するもの
With .Range("D2", .Cells(Rows.Count, "D").End(xlUp)).Offset(, 22) 'Z列
.FormulaLocal = "=VLOOKUP(D2,リスト!$A$2:$B$4,2,FALSE)"
.SpecialCells(xlCellTypeFormulas, xlErrors).ClearContents
.Value = .Value '数式を値に変更する
End With
On Error GoTo 0
End With
End Sub
*R1C1方式で数式を書くと不評が多いようなので、A1方式で書きます。
No.6
- 回答日時:
VBAでVLOOKUP数式を入力
For i = 3 To MaxRow
.Range("Z" & i).Value = "=IFERROR(VLOOKUP(D" & i & ",リスト!A2:B10,2,FALSE),"""")"
Next
VBAでVLOOKUPを使って解を入力
With Worksheets("終了品")
On Error Resume Next ’IFERRORに該当する部分
.Range("Z3:Z" & MaxRow).ClearContents ’ ””””に該当する部分
For i = 3 To MaxRow
.Range("Z" & i).Value = WorksheetFunction.VLookup(Range("D" & i).Value2, Worksheets("リスト").Range("A2:B10"), 2, False)
Next
#5のコードの該当する箇所を入れ替え変更すると使用できます。
On Error Resume Nextは、IFERRORに該当しますが
厳密には、違います。
同じ、VLOOKUP関数ですが書き方が大分違いますね。
No.5ベストアンサー
- 回答日時:
シーンなので、
示されている数式を理解していませんが、、
Z3以降にD列該当行でVlookUp数式を入力するVBA
参考に、、、どうぞ
Sub 部品記載()
Dim i As Long, MaxRow As Long
MaxRow = Worksheets("終了品").Cells(Rows.Count, 4).End(xlUp).Row
With Worksheets("終了品")
.Columns(2).ClearContents
For i = 3 To 200
.Range("Z" & i).Value = "=IFERROR(VLOOKUP(D" & i & ",リスト!A2:B100,2,FALSE),"""")"
Next
End With
End Sub
おそらく、空白””の部分などが問題なのではないでしょうか
&の使い方も検証されては、と
No.3
- 回答日時:
表題に反する回答で、申し訳ありません。
これは、セルに数式を入力したいのだと思いますが
VBAで解を入力するのではだめでしょうか?
せっかくVBAを使用していますし、数式だと重くなる?まあ、大したことではありませんが。
数式を入力する場合 ”=1+1” で入力できます。
従って、セルで実際に入力して検証できます。エラーのない数式を ”で囲み文字列にしてVBAで入力します。
ご掲示の”=・・・”は、エラーがあるようですので確認されてみてください。
正確に数式を入力したのちに行などの変更は、やり方がいくつか考えられます。
Forなどのカウント変数で ”=D" & カウント変数 "+5"
Sub test()
Dim i
For i = 1 To 5
Range("c" & i) = "=D" & i & "+5"
Next
End Sub
これを実行すると D1には=D1+5が入力されます。
また、絶対参照などを確認しVBAで入力した数式をVBAを使いオートフィルを行うことも出来ます。
https://www.moug.net/tech/exvba/0050146.html
直接VBAで解を出す方法
作成者の好みや仕様、汎用性で変わりますが、やり方は、多くあります。
私は、Match派?なので、、下記にて同様の動作をするであろうコードを示します。
VLOOKUPは、他の方が回答すると思いますので、あえて。。
また、参考として、ワークシート関数をVBAで使用する場合は、WorksheetFunction.を入れます。
参考:https://www.atmarkit.co.jp/ait/articles/1506/19/ …
Sub Sample()
Dim r As Range
Dim cnt As Long, MaxRow As Long
Dim i As Long, j As Long
MaxRow = Worksheets("終了品").Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
For Each r In Range("A1:A" & Worksheets("リスト").Cells(Rows.Count, 1).End(xlUp).Row)
i = 1
With Worksheets("終了品")
cnt = WorksheetFunction.CountIf(.Range("D:D"), r)
For j = 0 To cnt
i = WorksheetFunction.Match(r, .Range("D" & i & ":D" & MaxRow), 0) + i
.Range("Z" & i - 1) = r.Offset(0, 1)
Next
End With
Next
End Sub
細部は気にしてませんが、表組の解釈が違っていたら、すみません。
No.1
- 回答日時:
=IF(ISERROR(VLOOKUP(A2,リスト!$A$2:$B$4,2FALSE)),"",VLOOKUP(A2,リスト!$A$2:$B$4,2FALSE))
ではないでしょうか。最初のVLOOKUPでエラーならばスペースを、エラーでなければ後のVLOOKUPで検索値を表示する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 文字を増やしたい。
-
エクセルの計算
-
セルの内容表示が邪魔になる
-
Excel
-
Microsoft365に変えたのですが...
-
エクセル:一覧表に存在する文...
-
エクセルで日付を数字+アルフ...
-
エクセルでの作業計算方法について
-
エクセルで年休を管理する方法...
-
はがきについて。
-
【マクロ】その時、その時で変...
-
excelの不要な行の削除ができな...
-
Microsoft1Officeの互換ソフト...
-
エクセル関数を教えてください
-
Excel ピボットテーブルで日付...
-
【マクロ】読取専用のファイル...
-
【関数】適切な文字数の数字を...
-
時間によってファイル名が変わ...
-
ある列、或いは、ある行のセル...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
皆さま、音信不通で申し訳ありません。
1つずつ確認し勉強します。
はじめての投稿で記入する欄が間違っていたら申し訳ありません。
ぶうじーサマ
VLOOKUP関数は作成できましたが、
そのシートには別のマクロが組んでありまして既存の値を削除する。となっています。
そのボタンを押してしまうとセルに入れてた関数がきえてしまうのでVBA内にVLOOKUP関数を入れたかったのです。
くんこばサマ
WorksheetFunctionオブジェクト
これです!
ありがとうございます‼︎
Qchan 1962サマ
わかりやすいように説明してくださってありがとうございます。
久々にマクロを作成しようと思ったら英語に見えて何がなんだかわかりません。ただただ未熟者です。
添付いただいたURLを確認致します。
今思うと、関数の消えない削除の仕方を質問するべきだったカモしれません。
親切丁寧にありがとうございます。
文字数オーバーになってしまうので、次の補足に続きます。
Wind Fallerサマ
記述までご記載いただきありがとうございます。
返信するにも期間があるのか、最初の投稿に今でも返信ができるのかがわかっておらず申し訳ありません…調べてみます。
「回答する」をクリックしたら自分の質問には回答できないようでして…
皆さま本当にありがとうございます。
返信しない という失礼な態度をしてしまい大変申し訳ございませんでした。
補足ありというところでぶうじーサマ宛?に記入しました。
お一人ずつ返信したいのですが申し訳ありません。
ぶうじーサマ以外の方にも補足ありと記載があれば記入できるのですが、他の方には補足ありが表示されておらず。(見落としかもしれません(>_<))
本当に申し訳ありません。