• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 請求書作成したい)

Excelで請求書作成方法

このQ&Aのポイント
  • EXCELでA商事、B商事、C商事、3社の請求書を別々に作成する方法について教えてください。
  • A商事、B商事、C商事のデータを[データ]シートに貼り付け、それぞれのシートにデータを自動的に入力したいです。
  • [データ]シートに[取り込み]ボタンを作成し、VBAを使ってデータを取り込む方法も教えてください。

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

  • ベストアンサー
  • kitiroemon
  • ベストアンサー率70% (1827/2576)
回答No.1

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セルには項目名を入れました。

yakkun2338
質問者

お礼

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

その他の回答 (1)

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

これは時々出る質問で、エクセル関数による「条件で(該当行を)抜出問題」にあたる。 質問理由・ニーズは「請求書作成」となっているが、本当にそうか? 請求書なら「印刷する」というニーズが控えている。これもすんなりできないと困るだろう。 私はこちらの理由からVBAを勧める回答をしてきた。 1シートの各区画を手動で印刷したり、シートごとに印刷するのも、印刷操作が面倒なもんだ。 方法は印刷までについて (1)関数で 条件による抜出は、式が複雑になります。関数の熟達者が回答を出すだろう。 (2)操作のフィルタオプションで (2)VBAで 関数とわずかのVBA https://okwave.jp/qa/q2798008.html (3)ACCESSで (4)フリーソフトで それやこれやで、VBAができない人がやると、おかしな仕組みになったりすると思う。 まあ問題が本当にビジネスのことならば、最低アクセスでもできるようになって考えることだろう。 抜出部分だけならば「Excel関数 条件で抜出問題」で照会して該当を見つけて、読んでみてはどうかな。フィルタオプションで、会社名の、重複と漏れのない一覧をまず出して 元データ Sheet1 A1:E7 得意先番号 得意先名 販売日 商品名 金額 A001 A商事 2017/4/7 メロンパン 2400 A001 A商事 2017/4/10 チョコパン 4920 A002 B物産 2017/4/19 カレーパン 2424 A003 C工業 2017/4/10 チョコパン 5346 A003 C工業 2017/4/27 カレーパン 6408 A003 C工業 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に出る。 注意点が多少あるが「どんなものか臭いだけの紹介」なので略。

yakkun2338
質問者

お礼

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

関連するQ&A

専門家に質問してみよう