ここから本文です

はじめましてエクセルVBA初心者です。 VBAがうまくいかず困っています。 ※デ...

cur********さん

2018/7/1710:10:14

はじめましてエクセルVBA初心者です。

VBAがうまくいかず困っています。

※データは下記よりダウンロードできますので参照ください。

https://yahoo.jp/box/aE8s9n

<やりたいこと>
「基本シート」のB列:商材コードで抽出した結果データのD列~L列までをコード別に下記シートへ振り分けたいです。(B列C列は不要です)

商材コード:1001→シート「商01」
商材コード:1002→シート「商02」
商材コード:1003→シート「商03」

※上記のルールで今後も商材とシートは増える予定です。

ネットで検索し下記のVBAを作成しましたが
「基本シート」のセルB7に入力したコードに関して振り分け先に「値」として張り付かず、数式のままコピーされてエラーが出てしまいます。

<VBA> シート「商01」
Private Sub Worksheet_Activate()
Range("b8").CurrentRegion.SpecialCells(xlCellTypeVisible).Clear
With Sheets("基本データ")
.AutoFilterMode = False
.Range("B6:L6").AutoFilter
.Range("B6:L6").AutoFilter Field:=1, Criteria1:="1001"
.Range(.Range("d6"), .Range("d6").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("b7")
.AutoFilterMode = False
End With
End Sub

どなたがお力を貸して頂けませんでしょうか?


よろしくお願いいたします。

補足ご回答ありがとうございます。
説明不足で申し訳ありません。

循環エラーがでるのは下記の理由だと思います。

「基本データ」のJ列にH列の件数を参照する数式をを使用しています。

「基本データ」から商材ごとに抽出されたデータの
「D列~L列」のデータをシート別にVBAで張り付けた際に
数式がそのまま張り付いてしまうので参照していたH列がずれて循環参照になってしまっています。

またtam********さんよりもご指摘いただいた
エラーの内容というのは同様に振り分け先のシートでVLOOKUPの検索値のずれで#N/Aと出てしまう事です。

「数式」でなく「値」で張り付けば上記両方とも解決いたします。

どうでしょうか?

閲覧数:
85
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tai********さん

2018/7/1715:41:04

基本データの案件名は省略できないです。もし省略するなら別に重複のない案件IDが必要です。データベースで情報が欠落するのは致命的です。

あと、案件が1000件程度までなら数式で解決したほうが速いと思います。まだ、目的がよくわかっていないところがあるので外しているかもしれませんが、振り分けるシートのB8セルに

=IFERROR(INDEX(基本データ!D:D,1/LARGE(INDEX((基本データ!$C$7:$C$999=$B$4)/ROW($7:$999),),ROW(A1))),"")

と入れて縦横にコピーすれば目的に適うような気がします。
とりあえずは編集したファイルも参照してみてください。

https://box.yahoo.co.jp/guest/viewer?sid=box-l-iabaziswf7rkdim2jwri...

質問した人からのコメント

2018/7/19 13:44:53

ご教示ありがとうございます。
VBAは基礎から学んでみようと思います。

案件も1000件以内で収まりそうなので
数式を入れる事で目的が解決いたしました。
本当にありがとうございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる