• ベストアンサー

エクセルで任意の複数のデータを抽出したい

下記のような表があります 支払先  金額   金利  差引支払額  相殺依頼金額 A社    1000    0    1000      0 A社    2000   500    1500      0 B社    2000   500    1500     1000 C社    1000    0    1000      0 D社    2000    0    2000     1000 D社    3000    0    3000      0 D社    1000    0    1000      0 ・ ・ ・ これを A社  御中       お支払い通知 ┌―――――――――――――――――――――┐ │支払先 │ 金額  │金利  │差引支払額 │  │A社  │  1000 │   0 │   1000 │ │A社  │  2000 │  500 │   1500 │ │      │       │     │      │  └─────────────────────┘     相殺依頼金額     0円 このように、複数の列に分かれているデータを一括で 上記のように得意先ごとにまとめ、データを抽出したいの ですが、VLOOK関数では2行目を検索してくれません。 何か良い方法があればご教授願いたいのですが… みなさまお知恵を貸していただけませんでしょうか?? 現在、すべて手作業で貼り付けを行なっております…。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

過去に同様の質問に対して回答した方法ですが如何でしょうか。 データをSHEET1(1000行)、表示をSHEET2とし、表示シートのA1に得意先社名が入力される事としています。 (1)表示シートのA5セル(仮です)に   =IF(ROW($A1)-1<COUNTIF(Sheet1!$A$1:$A$1000,$A$1),INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$1:$A$1000=$A$1,ROW($A$1:$A$1000),65536),ROW($A1))),"") を設定し、縦横に必要分コピーして下さい。  但し、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 (2)相殺依頼金額は、合計する事を想定し   =SUMIF(SHEET1!A:A,$A$1,SHEET1!E:E)  で如何でしょうか。

natsu_koo
質問者

お礼

ありがとうございました! 解決いたしました!! 大感謝です!

その他の回答 (5)

回答No.6

この程度の物なら、VBAのテキストに同じようなものがのっています。関数や貼り付けでやるとミスが出ますので、請求シートのドロップダウンリストから、会社名を選んだら、別シートにある上記のデータから、一致する物を選んで、データの最後まで検索をくりかえし、請求シートにコピーするようにしています。(For~NextとIfでできます。)これだと件数が増減しても問題ありません。一度この方法でできると汎用性が高いので、色々な物に使えます。是非VBAを勉強してください。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

方法の一例ですがA社の右に1列追加して、 B2=$A2&TEXT(COUNTIF($A:$2:$A2=$A2),"000") として下方にコピーしてください。 支払先  No. 金額   金利  差引支払額  相殺依頼金額 A社   A社001 1000    0    1000      0 A社   A社002 2000   500    1500      0 B社   B社001 2000   500    1500     1000 C社   C社001 1000    0    1000      0 D社   D社001 2000    0    2000     1000 D社   A社002 3000    0    3000      0 D社   A社001 1000    0    1000      0 のように件数が表示されます。 この列を使って 支払先の1行目の名称=IF(COUNTIF(表の$A列,会社名)<ROW(A1),"",VLOOKUP(会社名&TEXT(ROW(A1),"000"),表の$B:$F列,COLUMN(A1),FALSE)) これをコピーして各列・行に貼り付ける。 会社名は御中の前のセルを絶対参照すれば良いかと思います。

natsu_koo
質問者

お礼

不勉強なわたしに大変解りやすい解説ありがとうございました! とても参考になりました!!

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

「A社」を指定したらA社の取り引き歴のリストが欲しいのですね。 http://oshiete1.goo.ne.jp/qa2667960.htmlhttp://oshiete1.goo.ne.jp/qa2690879.html のような過去の質問もあります。 関数の組み合わせで実現できますが、式が結構複雑になります。 そのため質問の内容だけで回答を書くと、開始行などが不明のためnatsu_kooさんが式の修正をしなくてはならなくなります。 過去問をご覧になった上でもう少し具体的に条件(検索会社名はどのセルに書く。リストの開始位置は? 等)を指定していただけると式も書けますが… (無論ご自身で修正できればベストです)

回答No.2

こんにちわ。 VLOOKUPとADDRESSOF関数を組み合わせれば 出来ないことは無いですけど、それだとやっぱり どこかしらで手作業が発生してしまいます。 ex. 得意先に提出するデータには関数が見えないように   データで貼り付け直ししたり、他社のデータを消したり・・・ 業務を効率化させたいとの要望ならば、マクロで 完全に自動化した方が後々便利だと思いますよ^^

  • fake-tang
  • ベストアンサー率24% (186/772)
回答No.1

[データ]→[フィルタ]→[オートフィルタ]でやってます。

natsu_koo
質問者

補足

回答ありがとうございます。 説明不足ですみません、得意先に提出する書類のフォーマットに 表示させたいのです。 得意先によりデータ行数も違うし、金額も変わってくるので 現在、オートフィルタしたものを全て手作業で貼り付けしています。 得意先数が500社以上あるので、この作業にむやみに時間がかかって いて…。

関連するQ&A