• 締切済み

excelでシートをコピー時にセルの値を自動変換

エクセル初心者です。 excel2003を使用しています。 セルに別シートの値を入力したい場合、“=別シート名!F3”となりますが、 新しくシートをコピーしたときにF3をF4、F5と順番に自動で変更させていくことはできますでしょうか。 データベースになるシートがあり、 そのデータをシートごとにレイアウトにあわせて表示させたいと考えています。 約30項目を300シート以上に同様の工程を適用予定です。 よろしくお願いいたします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

シートをコピーしたら、コピー元と全く同じ内容の複製シートが出来上がるだけです。 「シートをコピーした時に内容が勝手に書き換わる」なんてのは、コピーとは言いませんしそういう事は当然できません。 >シートをコピーしたときにF3をF4、F5と順番に自動で変更させていく こちらのような質問相談掲示板でも、割と多くの初心者さんが、一度は思いついて出来ずに挫折するご相談の一種です。大概の場合、「簡単に」そういう事が出来る方法はありません。 「できない」本質的な理由は、コピー元であれ複製シートであれ、それぞれのシートが「自分はいったい何番目を持ってくれば良いのか」を計算する手掛かりが無い、あるいはどうしたら手掛かりが得られるのか、という点にあります。 ここまでを理解した上で、ご相談の事を比較的簡単に実現する手立てとしては例えば ○各シートに何番目を持ってこさせるのか、手で記入する A1セルに数字の3を記入 数式セルに =INDEX(別シートの!F:F,A1) と記入 シートをコピーしたら、A1セルの3を4,5,6…と手で記入することで、自分は何番目を持ってくれば良いのかシートにあなたが教えます。 バリエーションとして、A1セルに「番号」を入れる代わりにデータシートの何行目を特定できるたとえば「日付」だとか、あなたが内緒にしている具体的なデータベースの内容に見合った内容を記入しても出来ます。 ○シート名の付け方にルールを定めて、複製シートの名前を手で記入する事で自分の番号を計算させる これも実はA1セルに番号を記入する方法の一種のバリエーションですが、たとえばシート名を「20130420」とすることで、データベースの2013年4月20日の行のデータを表示させたりする事は比較的簡単に出来ます。具体的に何を持ってきたいのか不明なので詳細は割愛します。 あるいは通常シート名はSheet1,Sheet2,Sheet3…といった名前の並びになっていますが、そこに付いている数字の1,2,3を拾ってデータベースの何番目の行を取ってこさせるといった手も考えられます。 ○マクロを利用する 「手でシートを複製し、A1セルに番号を記入する」と、言われてやるのはメンドクサイ仕事をまるっとマクロで自動的に行わせます。 準備: 「データベース」という名前のシートと「原本」という名前のシートを用意する 原本シートの数式セルには =INDEX(データベース!F:F,A1) と記入しておく 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub シート複写()  dim res as long  dim w as worksheet  for each w in worksheets   if isnumeric(w.range("A1")) then    res = application.max(res, w.range("A1").value)   end if  next  worksheets("原本").copy after:=worksheets(worksheets.count)  range("A1") = res + 1 end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押してマクロを実行する。

haln2985
質問者

お礼

解決いたしました! ありがとうございました!!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! 投稿後もう一度質問文を読み返してみて・・・ >新しくシートをコピーしたときにF3をF4、F5と順番に自動で変更させていくことはできますでしょうか。 の部分で大きな勘違いをしているようです。 前回の方法は単に「あるSheet」のF3以降を表示するだけです。 「新しくシートをコピーしたとき」を具体的に書いていただければ、的確なアドバイスができるような気がします。 (理解できていないのは当方だけかもしれませんが) どうも失礼しました。m(_ _)m

haln2985
質問者

お礼

解決いたしました! ありがとうございました!!

haln2985
質問者

補足

早速ご回答いただきましてありがとうございます! 私の説明不足でNo.1で解決には至りませんでしたm__m 申し訳ございません。 accessのレポート機能をエクセルで再現しようとしていると言えば伝わりますでしょうか。 accessでは不都合がありexcelで方法を探しております。 ・データベース(1行で1件分) ↓ ・単票形式のシートに表示(データベースの1行分のデータを1シートで表示) ※データベース1行ごとに単票形式シート1枚作成します。 この単票形式のシートを複製して、次のデータを各項目に表示。 さらにシートを複製して、さらに次の各項目を表示。。。以降繰り返しになります。 ご確認お願いいたしますm__m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 具体的なレイアウトが判りませんが・・・ 一案です。 ↓の画像のように「データベース」になるSheetのどこかのセル(画像ではA1セル)にSheet名を入力します。 A3セルに =IF($A$1="","",INDIRECT($A$1&"!F"&ROW(A3))) という数式を入れオートフィルで下へコピーすると 「AAA」SheetのF3以降のデータが表示されます。 一発で解決!とはいかないと思いますが、やり方だけ!m(_ _)m

関連するQ&A

専門家に質問してみよう