Bookにリストを1シート作り、その他はお客様ごとの請求書で、リストシートからの品目を検索値にして請求書から文字列を拾い、リストシートのセルに請求書から抽出した品目のカウント数と(各請求書シートすべてのtotal数です)、さらにその品の個数も別セルに抽出したいのです。
品目を各請求書シートからカウントするところまでは、Countifを使いなんとか出来たのですが、
その個数を引っ張り出せません。
VLookupを使っていますが、セルは「#N/A」となります。
式は
Sheets("リスト").Cells(2+i-2,8).Value=Application.VLookup(a,Worksheets(sNo).Range("B13:B27"),5,False)
です。"リスト"シートのH列に表示されているのはすべて「#N/A」になってしまいます。
ちなみに、
a=Sheets("リスト").Cells(2+i-2,3).Value
で品目を検索値にして
cnt=WorksheetsFunction.Countif(Worksheets(sNo).Range("B13:B27),a)
で、品目のカウント数は取れたのですが。。
VLookupではない方が良いのか…どなたか教えて頂けないでしょうか。
宣言は
Dim i As Long 'ループ用変数
Dim a As Variant 'リストの品目
Dim G As Long 'G列のカウント値
Dim cnt As Long '請求書の品目をカウントする値を入れる変数
Dim sNo As Long 'Bookのシート数
です。
No.6ベストアンサー
- 回答日時:
No.5ママチャリです。
>その辺が違うような気がします。
・・・とは、どの辺でしょうか?見つからなかった場合の処理ですかね?何らかの結果が返ってくるようになったようですが、どんな感じで希望通りではないのですか?その辺を書いて頂かないと、これ以上の回答は期待できないと思います。頑張って、自己解決してください。
ママチャリ様こんばんは。
先ほど何とか希望の処理が出来るようになりました。変数の位置を変えてみたり、If文追加などもしましたが結果、一番悩んでいた部分の原因はexcel上で、セルが統合されていたりなど、書式設定等、基本的なところが多かったような気がします。。f^^;
>VLookupメソッドは、WorksheetsFunctionオブジェクトなので、WorksheetsFunction.VLookupと書くべきです。
こちらも、変更致しました。
最初は「WorksheetsFunction」つけていたのですが、エラーばかりで前に進まず、何が悪くて何が良いのか訳が分からない状態になっていました。
そんな中具体的にご指摘下さって、基本に立ち返るというか、冷静になるきっかけになり、とても助かりました。
ありがとうございます!!
No.5
- 回答日時:
>Application.VLookup(a,Worksheets(sNo).Range("B13:B27"),5,False)
VLookupメソッドは、WorksheetsFunctionオブジェクトなので、WorksheetsFunction.VLookupと書くべきです。
Range("B13:B27") って、1列しかないですよね?その5列目を返すことはできないと思います。Range("B13:F27")のように、5列以上の列範囲が必要です。
検索値が見つからなかった場合、VLookupメソッドはエラーになると思うのですが、On Errorでスキップ等しているのでしょうか?私の勘違いであれば、ごめんなさい。
そうなんです。
その辺が違うような気がします。
値を変えるとエラー以外のものが出てくるようになったんです。
でも希望の値は出て来てくれないんですけど。。
No.4
- 回答日時:
こんばんは!
>VLookupではない方が良いのか…
VBAであればFINDメソッドが使えますが
具体的なレイアウトとやりたいことがイマイチ判らないので
的確なアドバイスが出来なくてごめんなさい。
※ No.2さんが仰っているように
もう少しコードを提示してもらえると
ちょっとはお役に立てるかもしれません。m(_ _)m
No.1
- 回答日時:
Sheets("リスト").Cells(2+i-2,8).Value=Application.VLookup(a,Worksheets(sNo).Range("B13:B27"),5,False)
Worksheets(sNo)は"B13:B27"間を検索するシート名を指定しないとイケナイのに
Dim sNo As Long 'Bookのシート数としているカラ。
↓
Dim sNo As String '検索するシート名
ご回答ありがとうございます!
sNo は、WorksheetsのNoをカウントする変数なんです。
この変数を使って、For文でBook内の全シートを確認してます。
これで、品目のカウントは取れたのですが(Countifで)、数量が取れなくって困っています。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
別シート参照のセルをシート毎...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
EXCELで同一フォーマットのシー...
-
エクセルで前シートを参照して...
-
エクセルVBAでパスの¥マークに...
-
Excelのシートを、まとめて表示...
-
エクセルの複数シートの保護を...
-
Excel 連番を入力する方法
-
複数シートの特定の位置に連番...
-
VBAでシートコピー後、シート名...
-
エクセル計算式解説
-
Excel、同じフォルダ内のExcel...
-
エクセルのシート名をリスト化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
Excelで金銭出納帳。繰越残高を...
-
別シート参照のセルをシート毎...
-
EXCEL:同じセルへどんどん足し...
-
エクセルでファイルを開いたと...
-
エクセルでシート名を自動入力...
-
EXCELで同一フォーマットのシー...
-
シートの保護のあとセルの列、...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルで前のシートを連続参...
-
VBAでシートコピー後、シート名...
-
前の(左隣の)シートを連続参...
-
エクセル 計算式も入っていない...
-
Accessのスプレッドシートエク...
-
エクセルで前シートを参照して...
-
VBAで条件によりフォントサイズ...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルのシート名をリスト化...
おすすめ情報