- ベストアンサー
エクセルで任意の複数のデータを抽出したい
下記のような表があります 支払先 金額 金利 差引支払額 相殺依頼金額 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行目を検索してくれません。 何か良い方法があればご教授願いたいのですが… みなさまお知恵を貸していただけませんでしょうか?? 現在、すべて手作業で貼り付けを行なっております…。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
過去に同様の質問に対して回答した方法ですが如何でしょうか。 データを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) で如何でしょうか。
その他の回答 (5)
- pascal3141
- ベストアンサー率36% (99/269)
この程度の物なら、VBAのテキストに同じようなものがのっています。関数や貼り付けでやるとミスが出ますので、請求シートのドロップダウンリストから、会社名を選んだら、別シートにある上記のデータから、一致する物を選んで、データの最後まで検索をくりかえし、請求シートにコピーするようにしています。(For~NextとIfでできます。)これだと件数が増減しても問題ありません。一度この方法でできると汎用性が高いので、色々な物に使えます。是非VBAを勉強してください。
- mshr1962
- ベストアンサー率39% (7417/18945)
方法の一例ですが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)) これをコピーして各列・行に貼り付ける。 会社名は御中の前のセルを絶対参照すれば良いかと思います。
お礼
不勉強なわたしに大変解りやすい解説ありがとうございました! とても参考になりました!!
- zap35
- ベストアンサー率44% (1383/3079)
「A社」を指定したらA社の取り引き歴のリストが欲しいのですね。 http://oshiete1.goo.ne.jp/qa2667960.html http://oshiete1.goo.ne.jp/qa2690879.html のような過去の質問もあります。 関数の組み合わせで実現できますが、式が結構複雑になります。 そのため質問の内容だけで回答を書くと、開始行などが不明のためnatsu_kooさんが式の修正をしなくてはならなくなります。 過去問をご覧になった上でもう少し具体的に条件(検索会社名はどのセルに書く。リストの開始位置は? 等)を指定していただけると式も書けますが… (無論ご自身で修正できればベストです)
- siddhaartha
- ベストアンサー率25% (45/175)
こんにちわ。 VLOOKUPとADDRESSOF関数を組み合わせれば 出来ないことは無いですけど、それだとやっぱり どこかしらで手作業が発生してしまいます。 ex. 得意先に提出するデータには関数が見えないように データで貼り付け直ししたり、他社のデータを消したり・・・ 業務を効率化させたいとの要望ならば、マクロで 完全に自動化した方が後々便利だと思いますよ^^
- fake-tang
- ベストアンサー率24% (186/772)
[データ]→[フィルタ]→[オートフィルタ]でやってます。
補足
回答ありがとうございます。 説明不足ですみません、得意先に提出する書類のフォーマットに 表示させたいのです。 得意先によりデータ行数も違うし、金額も変わってくるので 現在、オートフィルタしたものを全て手作業で貼り付けしています。 得意先数が500社以上あるので、この作業にむやみに時間がかかって いて…。
お礼
ありがとうございました! 解決いたしました!! 大感謝です!