こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL 請求書作成したい

お世話になります。
EXCELでA商事、B商事、C商事、3社の請求書を別々に作成したいのです。
やりたいこと
(1)[データ]シートに基幹システムからのデータを貼り付けます。A列に得意先番号が入っていますので、この番号をキーにそれぞれのシートのA,B,C商事にデータぶ
飛ぶようにしたいです。

(2)[A商事]シートのA1にはA001と入っています。
[データ]シートから読み込んで、[A商事]シートの請求書のフォーマットのC2に
月日、D2に品名、E2に金額が自動的に入るようにしたいです。最大で20行ほど
 [データ]シートから明細が入るようにしたいです。

A002,A003もそれぞれ別シートで同じフォーマットですので同じ仕様でデータが
自動的に入ると助かります。

実現できるのであれば方法は数式を埋め込むでも、[データ]シートに[取り込み]というボタンを作成したVBAが動く、でもどちらでも構いません。

恐れ入りますが、どなたかご教授いただけますでしょうか?
よろしくお願い致します。

環境
Excel2013

投稿日時 - 2017-05-09 14:27:10

QNo.9327154

すぐに回答ほしいです

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

A商事シートのC2のセルに下記関数を埋め込んでみてください。

=IF(COUNTIF(データ!$A:$A,$A$1)>=ROW(C1),INDEX(データ!C:C,LARGE(INDEX((データ!$A$1:$A$20=$A$1)*ROW(データ!$A$1:$C$20),),COUNTIF(データ!$A:$A,$A$1)-ROW(C1)+1)),"")

そして、D2セル、E2セルにコピーします。
この2行目の内容を、3行目以降、20行目くらいまでコピーします。
B商事シート、C商事シートにもコピーします。

実際の表示結果を添付します。
A1セルには「A001」、「A002」、「A003」と入力されているのですよね。
C1、D1、E1セルには項目名を入れました。

投稿日時 - 2017-05-09 16:18:11

お礼

kitiroemonさん、早速のご連絡ありがとうございます!
ご教授いただきました通り貼り付けたら出来ました!!
完璧です!やりたかったことが完璧に実現できました!
本当に助かりました。

この度は本当にありがとうございましたm(_ _)m

投稿日時 - 2017-05-09 18:51:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

これは時々出る質問で、エクセル関数による「条件で(該当行を)抜出問題」にあたる。
質問理由・ニーズは「請求書作成」となっているが、本当にそうか?
請求書なら「印刷する」というニーズが控えている。これもすんなりできないと困るだろう。
私はこちらの理由からVBAを勧める回答をしてきた。
1シートの各区画を手動で印刷したり、シートごとに印刷するのも、印刷操作が面倒なもんだ。
方法は印刷までについて
(1)関数で
条件による抜出は、式が複雑になります。関数の熟達者が回答を出すだろう。
(2)操作のフィルタオプションで
(2)VBAで
関数とわずかのVBA
https://okwave.jp/qa/q2798008.html
(3)ACCESSで
(4)フリーソフトで
それやこれやで、VBAができない人がやると、おかしな仕組みになったりすると思う。
まあ問題が本当にビジネスのことならば、最低アクセスでもできるようになって考えることだろう。
抜出部分だけならば「Excel関数 条件で抜出問題」で照会して該当を見つけて、読んでみてはどうかな。フィルタオプションで、会社名の、重複と漏れのない一覧をまず出して
元データ Sheet1 A1:E7
得意先番号得意先名販売日商品名金額
A001A商事2017/4/7メロンパン2400
A001A商事2017/4/10チョコパン4920
A002B物産2017/4/19カレーパン2424
A003C工業2017/4/10チョコパン5346
A003C工業2017/4/27カレーパン6408
A003C工業2017/4/29クリームパン606
データーフィルター詳細設定ー指定した範囲ー重複したレコードは無視する
H1:H4に
得意先名
A商事
B物産(質問例ではB商事)
C工業
とだし、H2以下のセルを条件にしてレコードを抜き出す。
VBAコード(マクロの記録で採れる程度のもの)
Private Sub Worksheet_Activate()
For i = 2 To 4
With Sheets("Sheet1")
.AutoFilterMode = False
.Range("A1:E1").AutoFilter
.Range("A1:E10").AutoFilter Field:=2, Criteria1:=Worksheets("Sheet1").Cells(i, "H")
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Worksheets(i).Range("A1")
.AutoFilterMode = False
End With
Next i
End Sub
A1をC4でも指定すればC4以下の範囲に貼りつく。 
結果はSheet2,3,4に出る。
注意点が多少あるが「どんなものか臭いだけの紹介」なので略。

投稿日時 - 2017-05-09 17:26:59

お礼

imogasiさん、早速のご連絡ありがとうございます!
ご教授いただきましたVBAで出来ました!!
実現できました。本当に助かりました!
仰る通り印刷まで出来ると最高ですので、やはりVBAがいいのかもしれませんね。当方初心者なのでVBA苦手なのですが、頑張ってみたいと思います!

この度は本当にありがとうございましたm(_ _)m

投稿日時 - 2017-05-09 18:54:56

あなたにオススメの質問