エクセルで請求書作成時のシートごとの参照先セルの変更方法は?

このQ&Aのポイント
  • エクセルで請求書を作成する際、各請求先別に複数のシートを作成する方法がありますが、シートごとに参照先セルを変更する方法について教えてください。
  • 請求元データシートには請求先顧客名、商品名、数量、金額が一覧で入力されています。各請求先別シートでは、請求元データシートの該当するセルを参照する必要がありますが、シートをコピーすると数式もコピーされてしまい、手入力で参照先セルを変更する作業が煩雑です。
  • エクセルで各請求先別にシートを作成する際、参照先セルを自動で変更する方法や数式が存在するかどうかについて教えていただきたいです。
回答を見る
  • ベストアンサー

シートごとに参照先セルを変更するには

エクセルで請求書を作成している初心者です。 請求元データシートには請求先顧客名、商品名、数量、金額が一覧で入力してあります。 そのシートを元データとして、各請求先別シートが70シートあります(70件の請求書を作成)。 元データのA2~A71に顧客名、B2~B71に商品名、C2~C71に数量、D2~D71に金額が入力されており、A社請求シートには下データA2、B2、C2、D2を参照し、B社請求シートにはA3、B3、C3、D3と参照のセルを変えていきたいのですが、シートをコピーすると数式もコピーされてしまい、参照元を手入力で変更していて気が遠くなります。 検索してもよくわからなかったのですが、このシートにはこの行を参照、というように自動で変える数式か方法はありませんでしょうか? 初歩の質問でしたら申し訳ありません・・・。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

請求先のシートの空白セルに、白文字で番号入力欄を作って、それをキーに参照すればいいのでは? 空白セルがA1として 顧客名 =INDEX(請求先元データ!$A$2:$A$71,$A$1) 商品名 =INDEX(請求先元データ!$B$2:$B$71,$A$1) 数_量 =INDEX(請求先元データ!$C$2:$C$71,$A$1) 金_額 =INDEX(請求先元データ!$D$2:$D$71,$A$1) のようにすればA1のセルに1と入力すれば2行目、70と入力すれば71行目が参照されます。 シート自体をコピーしてもいいし、VBAで番号を変えて印刷するマクロを使うのも可能です。

mamamamamariko
質問者

お礼

こんな考え方があったとは!! 簡単にできて、しかもわかりやすくて、本当に助かりました。 ありがとうございました!

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

ご希望の請求書を作成するなら、それぞれのシートを作成するのではなく、1枚のシートに顧客名を入力して(入力規則でドロップダウンリストから選択させるようにする)、以下のようなVLOOKUP関数で自動的に対応するデータを引っ張ってくるのが合理的な対応です(B列の商品名を引っ張ってくる場合)。 =VLOOKUP(顧客名のセル番地,データベースのシート名!A:D,2,0)

mamamamamariko
質問者

お礼

経理の方からすべての請求書データをシートごと保存するように言われていて 自分でも非合理的だなと思ってはいるのですが・・・ ご回答ありがとうございました!

関連するQ&A

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • シートの違うセルを参照したいのですが・・・

    Sheet1 A1  B1  C1  D1 Sheet2 F1 F2 F3 F4 Sheet1 A1 のセルには Sheet2 F1 のセルを Sheet1 B1 のセルには Sheet2 F2 のセルを 参照するような数式を作成したいと思っています。 お教えくださいますよう、お願いいたします。

  • 複数シートに跨る数式参照について

    現在、1つのファイルにAシート、Bシートが存在します。 Aシートは、Bシートから値を参照し、数式、条件付き書式、 VBAにて作成されているシートになります。 Bシートにはデータが格納されています。 今回、新しくシートが4つ増えます。(C,D,E,Fとします) 新シートの役割としては、Bシートと同じくデータが登録されます。 そこで質問なのですが、Aシートで全てのシート(B,C,D,E,F)の データを参照をするにあたり、数式を簡単に設定する方法があるか知りたいです。 B,C,D,E,Fシートは、フォーマットが違うため、同じ項目を参照するのでも Bシートでは、H列を参照。Cシートでは、I列を参照など条件が変わるため シート名を覚えておく方法では、うまくいかず、結局数式でIF ELSEIF と 数式を作成する必要があり、参照数も多いためとても手間になります。 【条件】 ・始めにB~Fのどのシートを使用するか選択をします。 選択をしたシート名等は格納しておけます。 ・VBAは使用可能です。 ・参照数は500~1000セル程度。 ・できるだけ後からメンテしやすい形にしたい。 ・条件付き書式はAシートのみで完結しているため、影響はないと思います。 最悪、Aシートを5ケース分作成し、使用シートを選択時にシートの表示・非表示を 切り替えるしかないと今は、考えています。 知恵をお貸し頂ければと思います。

  • エクセル シート名付きセル参照

    Sheet1のセルA1を、Seet2のセルB1で参照したとします。 Sheet2のB1には =Sheet1!A1 と記載してます。 別ファイルを開き、Sheet2をまるごとコピーすると、コピー先のシートには =[元のファイル名]Sheet1!A1 と記載され、コピー元のファイル名が自動的に入ります。自動で入らないように出来ますか? =Sheet1!A1 と書いてあって欲しいのです。 Sheet2丸々コピーでなく部分コピー&ペーストでも構いません。参照が多いため、全部をちまちま修正して[元ファイル名]を消すことは出来ません。

  • エクセルで、異なるシートから隣のセルを参照する場合は?

    エクセル2007に関して質問です。 「シート元」のデータを「シート参照」で参照しております。 データ参照は以下の通りです。 「シート参照」のA1のセルに「=シート元!A1」 「シート参照」のB1のセルに「=シート元!B1」 「シート参照」のC1のセルに「=シート元!C1」 ・ ・ ・ というデータがあり、これをシート元A10から新たに シート参照A1のセルに「シート元!A10」11、12、13・・ という風にデータを毎回更新しています。 その度に、「シート参照」の式を手打ちで直しているのですが、 これを、「シート参照A1」のセルを直すだけで、 B1、C1のセルも自動的に、シート元!10、11と 参照するようにしたいのです。 シート参照B1のセルに「=シート参照A1+1」と入れてみましたが、出来ませんでした。 この様な参照は、可能なのでしょうか?

  • エクセルシートの行列入れ替え参照

    エクセルのシートで、行と列を入れ替えて参照する ことができるでしょうか? 例えば、参照元のSheet1が以下の様になっていると します。 参照元<Sheet1> A   B    C 1  佐藤   遠藤   鈴木 2  数学   国語  社会 3  100    80   70 これを、Sheet2で以下の様に参照したいと思って います 参照先<Sheet2> A    B    1 =Sheet1!A1 =Sheet1!A3 2 =Sheet1!B1 =Sheet1!B3 3 =Sheet1!C1 =Sheet1!C3 1行目に数式を入れて、2行目以下にドラッグして コピーしようとすると、 =Sheet1!A1 =Sheet1!A2 =Sheet1!A3 の様になってしまうので、どうしたものかと途方 にくれております・・・。 以上、解決策を教えて頂けますと大変助かります。 よろしくお願い致します。

  • エクセルでシートを探しデータをフォームにコピー

    見ていただきありがとうございます。 エクセルを使って次のようなことを考えています。 発注のあったお客様の顧客番号001~300(順不同)が毎日更新されてきます。 A1には顧客番号、B2には日付、B3とC3にはコード 数量、B4からC13にデータがあります。 .........A............ B................C 1.....001 2...............2013/7/7 3.................コード..........数量 4..................AA1.............10  5..................AB2.............15 6..................BA1.............20 7..................BB1.............5  8..................CA2.............10 9..................CB1.............15 10................DA1.............10  11................DB2.............15 12................EA1.............20 13................EB2.............30 A1がシート名になってます。 ************************************************************************ このような場合、sheet1にコマンドボタンを設けて押したとき001~300のシート名がA列に抽出され、 順番にデータが見積もり、納品書、請求書のフォームに転記できるようにならないでしょうか? 各フォームのセルは共通でB1に顧客番号、C1に日付、B4~B13コード 数量、C4~C13に数量を コピーしたい。 教えてもらえたらうれしいです。

  • VLOOKUPで他のシートを参照する場合

    数式に間違いがあったので、前回の質問をいったん締め切って、再度投稿いたします。 シートが(1)「値表示」と(2)「データ」の2種類があります。 (2)にはB1:D4、B5:D8、B9:D12というように、セル12個分にそれぞれ独立したデータ表があり、このデータが全部で10個あります。 そして、このデータから任意の値を(1)「値表示」シートに表示したいので、(1)のセルA1に「=VLOOKUP(B1,データ!,B1:D4,2,FALSE)という式を入れます。 これで、(1)のA1(2)のシートのデータ表から任意の値が表示されるのですが、このA1に入力した式をコピーして、A10までそれぞれの表に対応したVLOOKUPの数式を入れたいのですが、普通にコピーするとA2以降に入力される式はデータの参照範囲がA1の範囲から1セル分だけずれたB2:D5となっています。A2が参照する範囲は本来はB5:D8にしたいので、一つずつデータの参照範囲を修正しないとならないのですが、このような場合は、やはり一つずつ修正するしか方法がないのでしょうか。 もっと、素早く参照先を変更できる方法がありましたら教えてください。

  • 【Excel】セル参照について

    色々、検索サイトで調べたつもりなのですが、 分からなかったので、質問させていただきます。 エクセルにてとある連続したデータを参照して6行ごとに表示させようと考えています。 sheet2のA1~Z10までに連続データが入っており、 sheet1のB1にsheet2!A1、B2にsheet2!C1、B3にsheet2!G1、B4にsheet2!H1、B5にsheet2!K1、B6にsheet2!S1のデータを参照させています。 B1~B6をコピーして、B7以降に貼りつけると B7にsheet2!A7、B8にsheet2!C7、B9にsheet2!G7、B10にsheet2!H7、B11にsheet2!K7、B12にsheet2!S7 というようにデータ参照が飛び飛びになってしまいます。 B1~B6をコピーして、B7以降に貼りつけても B7にsheet2!A2、B8にsheet2!C2、B9にsheet2!G2、B10にsheet2!H2、B11にsheet2!K2、B12にsheet2!S2 のように1つずつ参照させるためにはどのようにしたらよいのでしょうか?

専門家に質問してみよう