dポイントプレゼントキャンペーン実施中!

sheet1のA列~P列に以下のようなデータがあり、sheet2に特定のデータを抽出して貼付けたいと思っていますが独学では思うようになりません。どうかご指導いただけませんでしょうか。

「sheet1」
A    B      C  D    E    F    G    H   …P
コード 品名    単価 数量   4月   5月   6月    7月    3月
121   コピー用紙  500 12  1,500 1,500 1,500 1,000 2,000
122   事務用品   700 12 700 700 700 1,400   700
123   電池 350 2 0 0 700 0 700
211   ガソリン代 142 12 9,000 9,500 8,500 8,500 7,000
212   ワイパー 1,480 1 0 0 0 0 1,480


「sheet2」
A
コード
123   電池 350 2 0 0 700 0 700
212   ワイパー 1,480 1 0 0 0 0 1,480

※作業
「sheet2」のコードは既に決まっている為、そのコードに一致した「sheet1」のB列~P列
までの内容を「マクロボタン」を押すことで自動貼付けできるといった内容となります。

以上、何卒よろしくお願いいたします。

質問者からの補足コメント

  • つらい・・・

    回答いただき有難うございました。
    僕が説明不足だったのですが、「sheet2」は理由があって関数は使用したくなかったので今回vbaということでご質問させていただきました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/11/23 18:18

A 回答 (3件)

こんにちは



>今回vbaということでご質問させていただきました。
既に指摘がありますが、ご自分でできないものを利用するとメンテできなる恐れが大です。

一方で、少し要領よく考えれば「マクロの記録」を利用して実現することは不可能ではないでしょう。
※ ご質問のタイトル通り「VLOOKUP」を利用していますので、元データの空白欄は「0」表示になります。
  空白のままとしたい場合は、表示書式で行うか、関数式を修正してください。

Sub Sample_12035038()
Dim r As Range
Const f = "=IFERROR(VLOOKUP($A2,Sheet1!$A:$P,COLUMN(),0),"""")"

With Worksheets("Sheet11") 'Sheet2
 Set r = Range(.cells(1, 1), .cells(Rows.Count, 1).End(xlUp))
 If r.Rows.Count < 2 Then Exit Sub
 Set r = r.Resize(r.Rows.Count - 1, 15).Offset(1, 1)
 r.FormulaLocal = f
 r.Value = r.Value
End With
End Sub
    • good
    • 0

> 「sheet2」のコードは既に決まっている


もしも、sheet2のA列に、あらかじめ、コードが書かれているのならば、
> 「マクロボタン」を押すことで自動貼付けできる
マクロを使わずに、EXCEL関数vlookupを、sheet2のB列などに使う方が、良いのではないですか。 自動反映になっていた方が良さそうですが。
この回答への補足あり
    • good
    • 0

VBAなんていらなくね?


私なら
1:抽出コードリストシートを作成、(紫)一覧ね
2:シート1(緑)にあるデータの中から、抽出コード(紫)にあるデータをシート2(オレンジ)に反映させる関数を使うだけ

そもそもVBAわかってなくて、作ってもメンテナンスできなくて困るだけだkらね。

欲しいデータのシート2の関数
=IFERROR(VLOOKUP(lst_抽出コード!A:A,Sheet1!A:A,1,0),"")
=IFERROR(VLOOKUP($A2,Sheet1!$A:$I,2,0),"")
=IFERROR(VLOOKUP($A2,Sheet1!$A:$I,3,0),"")
以下列の数を4,5,6と増やすだけ
「ExcelのVBAでvlookupの使い」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!