Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
案内文作成の為、コピーしたい
投稿日時: 20/02/25 17:26:44
投稿者: poy

得意先に案内文を作成したい
 
データシートの中にある得意先No毎に案内シートに売上内容を貼り付けしたい
 
データシート
得意先No 会社名 売上品名 売上数量
 1    AAA   XXX    5
 1    AAA   YYY    10
 8    BBB   ZZZ    8
 9    CCC   YYY    1
 9    CCC   ZZZ    5
 
案内シート
A1セルに得意先No「1」を入力したら
該当のセルに会社名「AAA」が表示
また別のセルに売上品名と売上数量「XXX」「5」
その下のセルに「YYY」「10」
 
VLOOKUP関数を考えましたが、会社毎に売上品名が多数ある為、
うまくいきませんでした
 
ご教授お願い致します

回答
投稿日時: 20/02/25 21:45:16
投稿者: simple

商品が1個でも10個でもレイアウトは変わらない前提で。
 
(1)重複を除いた顧客Noの一覧表を別途作ります。
 (手段は、「重複の排除」でも「フィルタオプション」でも)
(2)以下を、(1)の顧客Noごとに繰り返します。
(3)オートフィルタで顧客Noを指定して抽出します。
(4)繰り返しで、可視セルだけを対象にして、
   会社名、および売上品名と売上数量を転記します。
 
こういった方針で、それぞれについてコード作成してみてはいかがでしょうか。
骨格はマクロ記録によるコードが参考になるでしょう。トライしてみて下さい。

回答
投稿日時: 20/02/27 15:00:55
投稿者: ロードランナー
投稿者のウェブサイトに移動

案内シートがどういう形式か分かりませんが、データシートのピボットテーブルを案内シートにつくり、
レポートのレイアウトを表形式に、総計・小計を表示しないとすれば、あとは得意先bナフィルタリングするだけでできてしまいます。
 
VBAに拘らなければ、簡単にできる方法ですね。

投稿日時: 20/02/29 17:33:05
投稿者: poy

simple様
ありがとうございます。
オートフィルタでコピーして貼り付けでできました。
  
ただ次の作業でエラーが出てしましました。
 (最初の質問に記載せず、申し訳ございません)
データシートの内容を案内シートに貼り付けし、案内シートを印刷
   得意先No1の内容を案内シートに貼り付け→案内シートを印刷
   →得意先No8の内容を案内シートに貼り付け→案内シート印刷
   →最後に行くまで繰り返し
  
検索して見よう見まねで作成してみましたが、エラーが表示されます。
 (エラーの箇所は「Range("A1").CurrentRegion・・・」)
  
Sub 連続印刷()
    Dim i As Integer
    Dim LastRow As Integer
     
    Sheets("データシート").Select
    LastRow = Range("A2000").End(xlUp).Row
    For i = 2 To LastRow
    Range("K1").Value = Range("A" & i).Value
     
    Range("A1").AutoFilter 1, Criteria1:=Range("K1"), Operator:=xlAnd
    Range("A1").CurrentRegion.Copy Sheets("案内").Range("B27")
    Sheets("データシート").Select
    Range("A1").AutoFilter
    Sheets("案内").Select
    ActiveSheet.PrintPreview
 
    Next
End Sub
 
   
基本的なことが理解していないのだと思いますが
 よろしくお願い致します

投稿日時: 20/03/04 17:01:16
投稿者: poy

解決しました
ありがとうございます