• ベストアンサー

「Excel・VBA」sheet1にあるリスト通りに、別シートの請求書内容を置き換えたい

こんばんは! 明日仕事で使う為に、昨晩から色々試してるのですが 知恵をかして頂ければと思いますm(__)m エクセルのブックに sheet1と複数の請求書のsheetか存在します。 sheet1は請求書に必要な情報が入ってます。(データベースのようなものです)  会社名(1)  商品名(1) 商品名(2) 商品金額(1) 商品金額(2) 1 ○○商事 りんご   みかん    200    100 2 ○○会社 りんご   みかん    250    150 請求書は、取引先独自の請求書が100種類くらいあります。 なので、書式は様々です。 しかし、記載する内容は同じものなので、 例えば、請求書に 会社名(1)と入っていたら(○○商事)            商品コード(1)と入っていたら(りんご)          商品金額(1)と入っていたら(200)などと 置換していく方法はないでしょうか? 商品の種類も3種類しかないので、右に項目を作ってます。 ただ請求書の種類が多いもので・・・ 途中まで数式を組んだりマクロの記録で試したのですが VLOOKUPの数式が残ってしまったり、 次の会社に進んでくれなかったりで VBAの知識が乏しく調べてもわかりませんでした。 私もまだ調べながら作りますので もしおわかりになる方いらっしゃいましたらよろしくお願いいたします。

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

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

普通、今までの質問は、請求書の様式が1種類がほとんどだった。 Googleで「imogasi 請求書」で照会のこと。過去回答が出ると思う。 ーー 基本的にこうなると(種類が多いと)、VBAでプログラムを組まないと自動化できないでしょう。 ーー 関数によるとしても、会社名にしても各社入れる場所が違うので、 100種類あれば100通りx項目数のセルに式を埋め込まないといけないだろう。ただコピー貼り付けは可能と思うが。 ーー そのときSheet1における請求先当社のデータの有る行番号を入れるセルを作るのはどうかな。 例 Sheet1 ーーーー A列   B列 第2行目 東商事 名古屋市 Sheet2 Å1に2(東商事を示す) B3は住所として =INDEX(Sheet1!$A$1:$D$300,2,2) C4は会社名として =INDEX(Sheet1!$A$1:$A$300,A1,1) 式はほとんど似ているでしょう。第3引数だけ変わる。理屈上そうなります。 B3,C4の場所(セル)は、各会社の様式により決まる。 ーー Sheet2以下の各社の請求書様式のある、シートのA1 にSheet1のデータの行番号を入れていく。 (作業的には大変だが) それで内容的にはSheet1のデータが、各シートに収まるはず。 ーー 印刷 そこで(Sheet1以外の)シートを全て選択(Shiftを押しつつ)して1度に印刷できるから、全社分を印刷(各々2枚とかもできると思う)する。 ーー 問題はA1セルに毎月(毎締め日)行番号を書き改めないといけない(可能性が大)。 Sheet1の行が、ほとんど上位(固定得意先)は固定ならやややりやすいが。 が問題だが、VBAなら会社名から、その会社の請求書様式のあるシート名を探せるのだが、VBAを勉強してからのお楽しみかな。 レイアウトまでVBAで毎月作成しなおしは、プログラムが複雑になる。 フォント罫線なども各社再現は複雑。シートは1回人手で作って毎回使いまわしがよかろう。

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

>sheet1は請求書に必要な情報が入ってます。(データベースのようなものです) この辺りからおかしくありませんか? 会社名(1)  りんご   みかん 1 ○○商事  200    100 2 ○○会社  250    150 で十分なような気がしますが、 より良いデータベースであれば  納品日 取引先名  品名 数量 金額・・・  7/8   ○○商事 りんご 200  7/8   ○○商事 みかん 100 ・・・と入力してみてください。 次に、記載する内容は同じものなので、 を集計するシート1枚作成します。  取引先  ○○商事  期間   7/1 ~ 7/30 品名   数量  金額  りんご  みかん と準備して、条件にあった数量や金額が計算される関数を考えます。 次に請求書の様式にあわせた請求書のシートを100パターン作成します。 VBAを活用するならば、印刷ボタンを押すと、取引先に応じて必要な様式の請求書を自動で印刷する様なマクロを考えると良いでしょう。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

解決できましたか? 商品3種類を請求するパターンが100種類もあるというのが理解できません。 請求書(sheet2)から請求情報(sheet1)を作成するほうが分かりやすいかも その際、無効請求書に対応する行は空白になるように条件式「=if(無効の論理式,"",sheet2のセル) sheet1でフィルタ機能(データメニューからフィルター→オートフィルター)を使って空白行を表示しないとしておくとよいでしょう

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.1

失礼します、参考までに。 >(データベースのようなものです) 1行1データに変更すれば、VLOOKUP関数でも対応できると思います。 例えば、A列に社名コード、B列に重複の無い社名コード&商品コード、C列に社名、D列に商品名、E列に金額にしたとして、この範囲に名前を定義(DB_1)して =VLOOKUP(検索値,範囲,列番号,検索の型) を↓ =VLOOKUP(社名コード&商品コード,DB_1,列番号,FALSE) さらに↓ =IF(COUNTIF(DB_1,社名コード&商品コード),VLOOKUP(・・・,・・・,・・・,・・・),"") と、すれば、不必要な数式も表示されません。

関連するQ&A

  • エクセル 数式を別のシートに貼っても保存しないと

    エクセルの質問です。 エクセルに数式を作り、(たとえば=VLOOKUP)それをコピーして他のシートに貼り付けると、数式がコピーされ、同じ数式を使えると思いますが、今回それができなくなり、数式を貼り付けた後に、保存しないと、コピー元の表示がコピーされ、保存をすると変化して、正しい答えになります。 これは、どういう状態なのでしょうか? そしてどのように解決したらよいでしょうか?以前はできたのですが、環境でも変わったのでしょうか? よろしくお願いいたします。 例)シート1に=VLOOKUP の式をいれ、リンゴ、という答えが出ました。 シート2に同じ数式を入れると、みかんという答えが出るはずが、リンゴという答えのみが貼り付けされ、数式が役に立ってません。 そこで、保存すると、突然みかんという答えに変わります。

  • Excel:シート間参照し置換したい

    初心者です。異なるシート間における表を参照し、置換の ような事がしたいのですが、VLOOKUPが使えるのでしょうか? やりたいのは、下記の通りです。 Sheet1のような表があります。 Sheet2のA列を参照し、Sheet1のB列を変換し、 Sheet3のような結果を得たいのです。 近似値もできるみたいなのでVLOOKUPを使おうと 思ったのですが、「含む」は論理値でどう指定すればいいか 分からず困っています。 そもそもVLOOKUPでできるかも疑問ですし... 教えてください、よろしくお願いします。 Sheet1 A列     B列         12345    りんご、みかん、イチゴ 67891    いんげん 23456    チョコ、あめ 67890    みかん、りんご 56789    あめ Sheet2 A列     B列 りんご    くだもの みかん    くだもの いちご    くだもの いんげん   野菜 チョコ    おかし あめ     おかし Sheet3 A列     B列         12345    くだもの 67891    野菜 23456    おかし 67890    くだもの 56789    おかし

  • エクセル初心者です。関数を教えてください

    例 商品名 入数 ケース数 みかん 50   30 みかん 40   25 りんご 25   35 のシートがあります。 別シート 商品名 入数 ケース数 みかん みかん りんご にVLOOKUPを使い 商品名からケース数を当てるときに みかんは入数で2種類あるのに上の50入の分しか出てきません 2つとも出すにはどうしたらいいでしょうか? わかりづらくてすみません。よろしくお願いします

  • エクセルマクロ◇別シートで個人ごとに数値の集計

    EXCEL2003です。 以下のように、名前・個数・商品名(名前と商品名は重複あり)が列記されている EXCELのデータを、別シートで商品名の個数を個人ごとに集計したいと思っています。 ◇元データ◇ 名前 個数 商品 A子  2  りんご A子  1  りんご A子  3  みかん A子  2  みかん A子  1  メロン B子  1  みかん B子  1  みかん B子  2  メロン B子  4  キウイ ◇集計データ◇ 名前 りんご みかん メロン キウイ A子  3   5    1 B子      2    2   4 最初ピボットテーブルを使えばいいかと思っていたのですが、 これ以外にも元データから取得する値が出てくる予定のため、 できればマクロを組んで別シートに集計したいです。 よろしくお願いいたします。

  • EXCEL2003 複数シートから抽出したいです

    1つのブックに1ヶ月の日数分のシートがあります。(約30シート) それぞれのシートのデータは、 1水(sheet名)   A B…  P   Q   R    S  1       りんご 4つ  300円 2       みかん 3つ  500円 3       りんご 5つ  400円 4       バナナ 1つ  100円 …       …   …   … 2木(sheet名)   A B…  P   Q   R    S  1       ぶどう 4つ  300円 2       みかん 3つ  500円 3       りんご 2つ  200円 4       バナナ 1つ  100円 …       …   …   … の様なデータが入力されています。 それぞれ複数のシートのデータの中から、りんごだけを集め集計用のシートに以下の様に表示したいです。 集計用sheet   A   B   C   D 1 1水  りんご 4つ  300円 2 1水  りんご 5つ  400円 3 2木  りんご 2つ  200円       4        …  …   …   … 関数でもVBAでもいいので、複数のシートから抽出することは可能でしょうか? どなたかわかるかた教えて下さい。 よろしくお願いします。

  • セルの値を別シートの月別合計リストに貼り付けるには

    一社の該当月の請求金額合計がシート名"請求書"のX42に入ってます。これを別のシート"請求書一覧表"の該当する会社の該当月に自動で貼り付けるVBAはありますでしょうか。シート名"請求書"には会社名がE10に、発行年月日がN3に入っています。 貼り付ける側のシート名”請求金額一覧表”のA列のA2から下に会社名が70社入っています。横列はB1からM1まで1月~12月の名前が入っています。今は、"請求書"シートの合計金額をコピーして、”請求金額一覧表”シートの該当する会社の該当月に貼り付けています。 これをVBAで自動処理できればと思っています。 この日付と会社名を使って条件分岐のVBAは可能でしょうか? 今考えているのはN3に入っている発行年月日を、同じシート上で例えば =month(N3)で月だけ取得して、その月と会社名を取得して それを、請求金額一覧表”の特定のセルに貼り付ける事を考えました。Select Case やIf else if を使うと、マクロ分がとんでもなく長くなりそうです。やはり無理でしょうか?

  • EXCEL2003 別シートからの転記

    EXCEL2010を使っていますが他の方が2003を使っているので保存の時にファイルの種類を97-2003ブックにしています。 注文書一覧を作成し各シートの注文書にVLOOKUPを使いNo.が同じなら転記する式を入れています。(画像参照) VLOOKUP($AC$2,注文書!$A$4:$H$33,3,FALSE)&"" 1~30シートの注文書の金額を注文書一覧に転記する方法がわからなくて困っています。 IF('1'!E9:F10="","",'1'!E9:F10)と式を入力したのですが#VALUE!となってしまいます。 教えていただけないでしょうか?

  • EXCEL VBA 複数シート選択の方法(VBA)

    エクセルのシート選択方法について教えてください。 選択対象シート数は4つ(シート名は、「りんご」「みかん」「ばなな」「すいか」とします) シート名「表紙」のセルは A1:りんご A2:みかん A3:ばなな A4:すいか となっており、使用者はB1~B4セルに「○」「×」を入力し、 「○」となっているシートのみ選択出来るようにしたい。 シート名が「sheet1~4」のように連続するシート名である場合や、 ひとつの条件に当てはまるシートを複数選択する方法は 他サイトでも見つけることが出来たのですが、このような場合は どのようにすれば良いのでしょうか?

  • 【Excel - 関数】各商品の週ごとの売上合計個数を別のシートに出したい

    関数の設定方法について教えて頂けますでしょうか。 【シートA】のデータから【シートB】のようなレイアウトでデータを求めたい場合、 どのような関数を設定すれば良いのでしょうか。 各商品の週ごとの売上個数を出して、手動でシートBに貼り付けている状況です。 どのような関数を設定したら良いのか検討がつかず、困っています。 恐れ入りますが、ご教示頂けますでしょうか。どうぞ宜しくお願い致します。 【シートA】 A      B     C     D     E 1      第1週  第2週  第3週  第4週 2 りんご   0     1     0     1 3 りんご   1     0     1     0 4 りんご    1     1     1     1 5 りんご   1     0     0     0 6 バナナ   0     1     0      1 7 バナナ   1     0     1     0 8 バナナ   1     1     1     1 9 みかん   1     0     0     0 10 みかん  0     1      0     1 【シートB】 A      B      C         D 1       りんご   バナナ  みかん 2 第1週合計  3    2     1 3 第2週合計  2    2     1 4 第3週合計  2    2     0 5 第4週合計  2    2     1 6 合計      9     8     3

  • Excelで表を展開するには?

    客先より下のような発注書が、エクセルで届きます。 商品名 単位 A社 B社 C社 ・・・ 合計 --------------------------------------------- いちご 20個  10   0   0 ・・・ (数式) いちご 50個   5  20   0 ・・・ (数式) みかん 10個  10   0   5 ・・・ (数式) みかん 30個   5  10   0 ・・・ (数式) りんご  5個   0   5  10 ・・・ (数式) りんご 10個   0   5  10 ・・・ (数式) これを以下のようなリストを作成するために展開したいのです。 商品名 単位 出荷先 個数 -------------------------- いちご 20個  A社  10 いちご 50個  A社   5 いちご 50個  B社  20 みかん 10個  A社  10 みかん 10個  C社   5 みかん 30個  A社   5 みかん 30個  B社  10 りんご  5個  B社   5 りんご  5個  C社  10 りんご 10個  B社   5 りんご 10個  C社  10 別シートにセル参照で書き出してみたのですが、出荷先名や出荷先数が変動するため、日が変わると合計が入ったり出荷先が漏れたりしてしまい、うまくいきません。 上記のような表を、別シートか、もしくはCSVでエクスポートする方法があれば教えてください。 よろしくおねがいします。

専門家に質問してみよう