• 締切済み

エクセルVBAでフィルタ印刷の方法を教えてください。

みなさまご教授ください。 顧客リストシートがあり、B列からO列まで営業担当のIDや顧客データがあります。桁数はせいぜい300桁くらい(データによりまちまち)です。 今までは担当者ごと(約60名程)にソートをしてプリントアウトしてきましたが、これをVBAで処理をしたいと思っております。 但し、60名の中には該当ナシの為プリントアウトしないケースもあります。以前の履歴を見てコピペをしても、うまく動作しません。 ポイントとして 1.1人の桁数はそんなに無いので(A4横)1枚にプリントアウトしたい。 2.抽出データによって、担当者は該当ナシの場合もあるので全てのプリントアウトはしない。 みなさまのお知恵を拝借させてください。宜しくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

なれないのだろうが、質問で良くわからない点などあり。 >フィルタ印刷の方法 内容を反映していない。エクセルには「フィルタ」という操作や機能があるが、質問とは別のようなので、この言葉は使わないほうが良い。 ーー >担当者ごと(約60名程)にソートをしてプリントアウトしてきましたが これをVBA化することをお勧めしたい。 ーー ポイントとして、「営業マン」別に印刷帳票を分けるのかどうかが 書いてないのが、最大の片手落ち。 ーー >60名の中には該当ナシの為プリントアウトしないケースもあります 今回該当なしの紙片さえいらないのですね。 ーー >以前の履歴を見てコピペをしても、うまく動作しません。 これは何の意味かわからない。 人間なら見て、適当に範囲を変えて貼り付けるでしょう。 ーー >1.1人の桁数はそんなに無いので(A4横)1枚にプリントアウトしたい。 1.1とは「ひとりひとりは」という意味か? ーー >抽出データによって、担当者は該当ナシの場合もあるので全てのプリントアウトはしない むしろ、データが無いのに、全営業マンのシートを打ち出すほうが 難しいのです。特に書かなくても良いのです。 ーーーー 2つの方法を紹介します。 Aソート法 (1)営業マンコードか、名でソート (2)第1行目を基準営業マン名の変数に記録 (3)1行ずつ処理して、営業マンの名が、基準営業マン名と同じ間は印刷シートの明細欄に写す (4)基準営業マン名と今の行の営業マン名が変わったら、今までためた明細で印刷シートを印刷 (5)変わった営業マン名を基準営業マン名に記録し、 印刷明細範囲に今の行で1行写す。 (6)繰り返し。(3)へ (7)終われば、最後の営業マン分を印刷 印刷はRange(A1:H20).PrintOutのように、各営業マンとも同じ良い。 Range(A1:H20).は仮定で、適当に帳票実情にあわせて。 1行しかない営業マンも1ページ印刷される。 Bフィルタ法 (1)営業マンごとに営業マンコードをシートに持っておく。 (2)営業マンごとに営業マンコードなどで、フィルタオプションで印刷範囲に抜き出し (3)印刷する。 (4)業マンごとに営業マンコードを差し替えて(2)っを繰り返す 具体的には下の行の営業マンコードでフィルタするということ。 C.Find法 1人の営業マン分を抜き出し、そろったところ印刷。 次ぎの営業マンを見つけ、印刷。 ーー 以上のように色んなロジックが考えられるのです。 読んで、ああ・あれか、というイメージが湧かなかったら、今はVBA化は無理と思う。 どれもVBAの中級以上の技量が必要なような気がする。 大丈夫ですか。

1224jmm
質問者

お礼

>読んで、ああ・あれか、というイメージが湧かなかったら、今はVBA化は無理と思う。 どれもVBAの中級以上の技量が必要なような気がする。 大丈夫ですか。 ご意見・ご指導有難うございます。 全然ムリのようです。 1つ1つ勉強しなおします。 お時間を割いて頂き有難うございました。

関連するQ&A

  • EXCEL VBA マクロ 印刷

    ・Aさん、Bさん、Cさん、~ Xさんと26人がいます。 ・A列には、それぞれ上記の担当者名が入ってます。 ・B列以降には、担当の商品名・数量などが入っているとします。 ・必ずしも、全員のデータが入っているとは限りません。(その日により、違います。) →上記のうち、A列がCさんのデータ(行)だけを抜き出し、印刷することは可能でしょうか?該当がなければ、マクロを終了させたいのですが・・ よろしくお願いいたします。

  • EXCEL セル内の数値から、5桁目だけを抽出する方法について

    EXCELシートのセル内に、以下のような30桁からなる数値が入力されている 列が複数あります。 この列内の数値の右端から「5桁目」だけ、または左端から「10桁目」だけを 抽出したいと思っているのですが、EXCELの仕様で数値の先頭にある「0」は 表示されないため、各セルごとに表示されている数値の桁数はバラバラです。 数値の先頭に「0」が付いているセルが多数あり桁数が不揃いなことと、 数値が30桁もあるため、セルの数値表示が「1E+29」のように「E+29」で表示 されてしまっており、うまく数値を抽出することが出来ません。 ◆元データ   「列1」     (1) 1234567890  →(本当は30桁:000000000000000000001234567890)    (2) 111111111100000000001111111111   (3) 1      →(本当は30桁:000000000000000000000000000001)  (4) 123456789012345678909999999999  ◆右端から5桁目だけを抽出する   「列1」      (1)  6      (2)  1      (3)  0      (4)  9   お手数お掛けいたしますが、ご指導下さいますよう宜しくお願い致します。

  • excelのVBAを利用し検索抽出を行う方法

    検索というよりデータの抽出の方が正しいかもしれません。 現在、顧客情報を種類別でシートに分けて表で管理しています。 情報には名前などの文字列、日付、時間などが含まれます。 この表の形式を説明すると、 ・列 … B~AI まで項目があります。(A列は使用していません) ・行 … 1行で1つのデータとなります。 ・行数…シートにより行数は異なります。 この形式の表が全部で14シートあります。 このシートのB列に「未・済」のステータスがあるのですが、 すべてのシートの「未」である行のデータを"Sheet1"に抽出させたいと考えています。 さらに、抽出されたデータの"D"列の日付にソートされるようにしたいのですが、 説明がわかりづらかったら申し訳ありません。 VBA初心者のためご教授いただければと思います。 よろしくお願いします。

  • Excel VBA 固定長のテキストの作成方法

    Excel2003のデータを固定長のテキストに書き出す方法について 質問させてください。 ■仕様: A列・・・文字列データ(1バイト文字 最大4桁、それ未満のデータあり) B列・・・数字データ(1バイト文字 最大6桁、それ未満のデータあり) A列の値が最大桁数に満たない場合、右側に空白を挿入し4桁とする B列の値が最大桁数に満たない場合、左側にゼロを挿入し6桁とする A・B列合わせて、1件10バイトで改行するテキストデータを作成したい と考えています。 ■補足: B列の下2桁は小数点以下であり、Excelの書式設定で"ユーザー定義" の"種類"に"0000.00"と設定されている。テキスト生成時には、この小数 点を消したい(123.45 → 012345) ■その他仕様 ・Excelのデータ件数は毎回変化 ・上記の内容をCドライブ中の特定のフォルダに書き込み ・テキストデータのファイル名は固定 3冊ほど本を見てみたのですが、固定長出力の記述が無く、また ネット上のお手本を元に作成したものは、A・B間に無用のブラ ンクが挿入されたり、桁数がバラつき、10バイト固定長になら ずに困っております。 ■追記 上記、”補足”の箇所は、計算用の列を挿入して、そこで100倍した 値を使ってはどうかと思うのですが、より洗練された方法があれば知 りたいと思いました。

  • Excel VBAでオートフィルタで抽出したデータの一部だけ貼り付けるには

    いつもこのコーナーでは皆様にお世話になっております。以下のVBAマクロが組める方ご教示ください。 Sheet2にあるデータに複数条件でソートをかけ、ある数字(1から18まで)を入れたら、オートフィルタでE列のデータの選択部をSheet1のある部分に1行貼り付けるという作業です。以下のInputBoxに数字を入れるところからです。 (ソート後、どの数字を入れるか判断) ↓ InputBoxにある数字"○"(1から18まで)を入れる ↓ オートフィルタE列「"○-"で始まる」or「"-○"で終わる」 ↓ 抽出されたデータのE列(1列だけ)のデータ(上から17個分)を選択 ↓ 選択部をコピー ↓ Sheet1を選択。Sheet1の"K5"セルに行列を入れ替えて貼り付け という流れなのですが・・・ わかる方教えてください。よろしくお願いします。

  • Excelのオートフィルタで選択⇒別セルへ

    Excelのオートフィルタで選択⇒別セルへ 顧客名と担当者氏名が紐付いている表を作成しています。 一人の担当が複数の顧客を担当しているためオートフィルタを設定しており、 担当名を選ぶと該当の顧客が出てくる感じの表です。 その表の上部に、「○○様 以下顧客リストとなります。ご対応願います。」 のような感じで、オートフィルタで担当を選ぶと ○○の部分に同じ担当名が出てくるようにしたいのですが、 関数で行うことは可能でしょうか? また特に誰も抽出していないとき(すべて表示)は、 ○○には何も表示されないようにしたいです。 無知で申し訳ございませんが、詳しい方ご教授いただけますと幸いです。 宜しくお願い致します。

  • エクセルVBAについて

    エクセルVBA初心者です。 以下のような処理をしたくて、色々な質問等を見て組み合わせて動かしてみたものの、なかなかうまくいかず困っております。アドバイスいただけないでしょうか? 「Sheet1」に以下のようなデータがあります。 <A列> <B列> <C列> ok59  886 ok88 ok70 777 ok75 okGG 478 ok66 ok97 358 ok58 ok69 764 ok47 ok39 368 ok40 okGG 794 ok68 ok85 463 ok75 ・    ・ ・ ・    ・ ・ A列とC列にはそれぞれ「ok+2桁の数字or文字」が入っています。 B列は特に今回は使わないデータですが、数字が入っています。 やりたいことは以下の通りです。 A列に「GG」を含む文字列(実質okGGしかない状態です)が出てきたとき、 その1つ下の行のA列とC列のセルをピックアップし、背景色をピンク色にします。 上の例だと、A列は「ok97」と「ok85」、B列は「ok58」と「ok75」のセルが該当します。 さらにピンク色にピックアップしたセルのから、頭の「ok」を除いた数字を3.5倍した数字を、 別のシートに抽出したいのです。 なので、上の例を使用した場合の抽出したデータは以下のようになります。 <A列> <B列> 339.5 203 297.5 262.5 ちょっと複雑なのですが、どのようにするのがよいのでしょうか? また、別シートに抽出したいのですが、 「Sheet1」の特定のセルに日付が入っているので、 できればその日付の名前のシートを作り、そこに抽出できたらなぁ・・・と考えています。 「Sheet1」にデータを貼り付けて、ボタンをポンっとおしたら日付の名前のシートができて、 欲しいデータが抽出されていく・・・というイメージです考えています。 どうぞよろしくお願いします。

  • エクセルで、桁数の異なるデータ(整数)を抜きたしたいのですが?

    初心者です! エクセルで、例えばA列にある桁数の異なるデータ(整数)を抜きたしたいのですが、アドバイスをお願いします。 桁数は、9桁~11桁の3種類のデータがあり、例えば9桁のデータを抜き出すには、どのようにすればよいのでしょうか? 【例】 A列↓ 123456789 2345678910 45874521223 235461789 4567896541 89756413578 以上、宜しくお願いします。

  • Excel VBAでオートフィルタで抽出したデータの一部だけ貼り付けるには(第2弾)

    今週質問タイトルの件で回答いただき解決したのですが、更なる操作を希望したく質問させていただきました。内容は Sheet2にあるデータに複数条件でソートをかけ、ある数字(1から18まで)を入れたら、オートフィルタでE列のデータの選択部をSheet1のある部分に1行貼り付けるという作業です。以下のInputBoxに数字を入れるところからです。 (ソート後、どの数字を入れるか判断) ↓ InputBoxにある数字"○"(1から18まで)を入れる ↓ オートフィルタE列「"○-"で始まる」or「"-○"で終わる」 ↓ 抽出されたデータの右隣のF列(1列だけ)のデータ(上から17個分)を選択 ↓ 選択部をコピー ↓ Sheet1を選択。Sheet1の"K5"セルに行列を入れ替えて貼り付け というものでしたが、これはできました。ここから先です。 Sheet1のU5セルに先ほどインプットした数字"○"(1から18までのどれか)を入れる ↓ Sheet2にてオートフィルタE列「"○-"で始まる」or「"-○"で終わる」によって抽出されたデータの一番上の文字列から「"○-"」もしくは「"-○"」を除いて残った数字(○を除く1から18までの数字)をSheet1のW5セルに(先ほどのセルとは1個飛ばして)入れる ↓ 以下抽出されたデータの上から2番目の文字列を同様に操作し、1個飛ばしのセルY5に入れる。これがBC5セルまで続く というものです。難しいとは存じますが、どなたか教えていただけませんか? よろしくお願いいたします。

  • EXCELでの整列(?)方法について

    EXCELで以下のようなことが可能かどうか教えてください。もし、できないようであれば何を使えば可能なのかをお願いします。 1.A列にIDが1.2.3.4.5.10.11.12.13.15・・・・・10000と間が抜けてふられ、B列に顧客名、C列に住所が書かれた表1があります。 2.「1」と同様にA列に1.2.3.10.11.15・・・・10000とさらに間が抜けてふられ、B列に顧客名、C列に担当者が書かれた表2があります。 この表1と表2を顧客IDで結びつけるようにA列に顧客ID、B列に顧客名、C列に住所、D列に担当者という感じで整列(もちろん担当者が空欄の顧客ができます)させることはできるのでしょうか。 分かりにくい文で申し訳ありません。どなたかお力を貸してください。

専門家に質問してみよう