• 締切済み

エクセルのセル参照

エクセル2007です。教えてください。 Sheet1のA1に「郵便番号」、A2に「住所」、A3に「氏名」、A4に「請求金額」を入力するとします。 これを100件入力すれば、「1」から「100」の行を使いますよね。 次にSheet2に請求書を作ります。A1に「郵便番号」、A2に住所、B1に「氏名」、C1に「請求金額」を 表示させたいのです。連続させてSheet1のセル参照を使うと、行が違うので直してやらなければなりません。 1件や2件ならともかく、100件となると…。関数では無理なんでしょうねえ。ではマクロ? どういうマクロを組んだらいいのか教えてください。

みんなの回答

  • P5Q
  • ベストアンサー率40% (86/210)
回答No.5

再度 No.3です。 この方法も・・・・。 関数 =INDEX の配列行番号,列番号 が良いかも。 Sheet1に、A列=郵便番号、B列=住所、C列=氏名、D列=請求額として100行入力した場合。 sheet2 は、 A1をカウンターセルとしておきます。 以下の関数を各セルに入力してください。 A2のセルに郵便番号、  =INDEX(sheet1!,A1:D100,A1,1) B2のセルに住  所、  =INDEX(sheet1!,A1:D100,A1,2) C2のセルに氏  名、  =INDEX(sheet1!,A1:D100,A1,3) D2のセルに請 求 額、  =INDEX(sheet1!,A1:D100,A1,4) A1のセルに表示したいsheet1の行No.を入力します。指定したsheet1の行No.の内容がsheet2の2行目に表示されます。 =INDEX(検索範囲,範囲の行番号,範囲の列番号)となります。 こちらの方が、VLOOKUPより扱いやすいと思います。 参考になれば、いいですが ^^;

  • cz611cgy
  • ベストアンサー率56% (190/338)
回答No.4

カテゴリ違いのような気がします。 Office系で聞いたほうが確実では? と建前はおいておいて、これではどうでしょう? Sheet2の印刷範囲外か、文字色を白にするなど姑息な手を使うかは お好きな方法を使うとして... たとえば、Sheet2のA5を位置決めに使うとし、列を指定するとしたら A1(郵便番号) =OFFSET(Sheet1!A1,A5+0,0) A2(住所) =OFFSET(Sheet1!A1,A5+1,1) (以下省略) #2さんでweb2525さんが指摘されていますが、本当はデータは横に 入っているのではないかと思うので、参考URIを見て適当に読み替えて ください。 自宅PCにExcelを入れていないので微妙に間違っているかもしれないので その場合はすいません m(_ _)m

参考URL:
http://office.microsoft.com/ja-jp/excel/HP100624151041.aspx
nov1130
質問者

お礼

実はVlookupで表を完成させています。恥ずかしながらOFFSETという関数を知りませんでした。これを使って違う表を作ってみます。しかし、いろんなやりかたがあるんですねえ。関数では絶対できないと思ったのに…。勉強になります。

  • P5Q
  • ベストアンサー率40% (86/210)
回答No.3

sheet1 の A列は連番かコード欄の列とします。(半角数字がいいかと) B列=郵便番号、C列=住所、D列=氏名、E列=請求額として100行入力した場合。 sheet2 は、 A1をカウンターセルとしておきます。 以下の関数を各セルに入力してください。 A2のセルに郵便番号、  =VLOOKUP(A1,sheet1!A1:E100,2,0) B2のセルに住  所、  =VLOOKUP(A1,sheet1!A1:E100,3,0) C2のセルに氏  名、  =VLOOKUP(A1,sheet1!A1:E100,4,0) D2のセルに請 求 額、  =VLOOKUP(A1,sheet1!A1:E100,5,0) A1のセルに表示したいsheet1の1~100のNo.を入力します。指定したsheet1のA列のNo.の行内容がsheet2の2行目に表示されます。 これが一番簡単かと思います。(あとエラー値を表示させない方法もあります) 更にこれを、表や伝票形式にした場合に、必要分を連続印刷するときはマクロで設定するとボタン1つで実行できるようになります。

nov1130
質問者

お礼

Sheet1のデータ全部をVLOOKUPの引数にするわけですね。まるっきり考えもしませんでした。おそれいりました。ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

>Sheet1のA1に「郵便番号」、A2に「住所」、A3に「氏名」、A4に「請求金額」を入力するとします。 データが縦に入っているのですか? そうなると一件のデータで4行使うので100件入力すると400行になるのでは? >Sheet2に請求書を作ります。A1に「郵便番号」、A2に住所、B1に「氏名」、C1に「請求金額」を表示させたいのです。 通常請求書は1件につき1通になると思いますが、Sheet2に100件分の請求書を一気に作成するのでしょうか? マクロを使うまでもなく関数だけでもできるとは思いますが、シートのフォーマットがイメージ出来ません。

nov1130
質問者

補足

す、すいません。初任者なので間違えました。 Sheet1はA1に「郵便番号」、B1に「住所」、C1に「氏名」、D1に「請求金額」です。 Shee2のA1に「郵便番号」、B1に「住所」、A2に「氏名」、A3に「請求金額」です。データは横並び、参照は変則縦並びです。印刷結果ではなく、Seet2に参照結果を反映させたいのです。質問する方が基本的なことを間違えてすいません。

  • te12889
  • ベストアンサー率36% (715/1959)
回答No.1

いわゆる「差込印刷」ですね。 http://oshiete1.goo.ne.jp/qa1672244.html 以前、Google検索したときには、もっといいネタがあったんですが、とりあえず・・・↑。

nov1130
質問者

補足

すばやい回答ありがとうございます。実はひそかに「関数だけでできないかなあ」と思っていたのですが…。マクロはこれから勉強します。

関連するQ&A