• ベストアンサー

Excelについて(2)

以下の処理をしたいのですが、自分で関数を入れてもうまく出来ません。(そもそも、こういった処理が出来ないのかもしれませんが) <sheet1で入力したデータを、sheet2以降に反映させたい> sheet1には、1~12月分のデータが入っており、Sheet2以降は、Sheet2が1月分、Sheet4は3月分と、月ごとにわけ、sheet1に入力したデータをそれぞれ該当月に表示させたいと考えています。 Sheet2をコピーして、2月分、3月分・・・とシートを増やしていくのですが、この際sheet2に入った数式そのままコピーされてしまいます。(当たり前ですが) これを、Sheet3であれば2月分のデータを引き込む数式に、Sheet4であれば3月分のデータを引き込む数式に自動でしたいのですが、うまく関数が使えません。 または、Sheet2に一定の数値、例えば「1月分」と入力することで、sheet1の「1月分」の欄に入力されたデータが引き込めるようにしたいと思っています。 うまく関数を組み合わせればできるみたいなのですが、あまり詳しくなく、できませんでした。 自力で解決できず申し訳ありません。ちゃんと調べればわかるのかもしれませんが、自分でうまく出来ないもので・・・。 詳しくわかる方がいらっしゃいましたらご教示いただければと思います。 どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

初めにSheet1のA3セルから下行を選択してコピーします。その後にSheet2からSheet13までについてシート見出しでそれらのシート名をShiftキーを押しながらあるいはCtrlキーを押しながらクリックして作業グループを構成します。 その後にSheet2について次の操作を行います。 A3セルを選択して貼り付けを行います。部署名が下行に表示されます。 次にA1セルには次の式を入力したのちにA1からC2セルまでのセルの結合を行います。 =IF(ISERROR((MID(TRIM(MID(CELL("filename",D1),FIND("]",CELL("filename",D1))+1,10)),6,2)-1)),(MID(TRIM(MID(CELL("filename",D1),FIND("]",CELL("filename",D1))+1,10)),6,1)-1)&"月分データ",(MID(TRIM(MID(CELL("filename",D1),FIND("]",CELL("filename",D1))+1,10)),6,2)-1)&"月分データ") これで1月分データと表示されない場合には一旦そのブックを閉じて、再び開いて上記の操作を行ってください。 次にC3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(A$1="",A3=""),"",INDEX(Sheet1!$A:$F,MATCH(A3,Sheet1!A:A,0),MATCH(LEFT(A$1,FIND("月",A$1)-1)&"月",Sheet1!$2:$2,0))) これでSheet2にはデータが表示されるでしょう。 その後にSheet1を選択することで作業グループは解除されますが、Sheet2で入力されたデータは1月分ですが、Sheet3では2月分、Sheet4では3月分・・・・・のデータがそれぞれ表示されているでしょう。

noriger
質問者

補足

上記の件、ありがとうございます。うまくできました!本当に助かりました。 度々のご質問で申し訳ありません・・・、こちらはSheet2以降の名称を1月分、2月分、3月分・・・としたいのですが、シート名を変えるとエラーになってしまいます。このような場合、どうすればよいですか。 例では1月分からスタートさせているのですが、4月スタートにしたいと考えています。

その他の回答 (3)

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.4

こんにちは。 既に回答が出ているようなのでご参考で。 まず、sheet1の表を訂正します。 セルの結合を解除し、次の通り表を訂正します。 検索を行う場合、セルを結合しない方がやりやすいので。  A   B   C 所属名 1月 2月 ~ 次に、sheet2に表を作成します。    A   B   1 1月 2 1月分データ 3 4 ○○部 1,000 5 ▽▽部 2,000 各セルに数式を入力。 A1 *ここに、月を入力方。    *入力した月に対応します。 A2 =A1&"分データ" A4 =IF(Sheet1!A3="","",Sheet1!A3)    *sheet1のA3が空欄の時は空欄。以外は、データを表示。 B4 =IF(A4="","",OFFSET(Sheet1!$A$2,MATCH(A4,Sheet1!$A$3:$A$12,0),MATCH($A$1,Sheet1!$B$2:$M$2,0)))    *sheet2のA4が空欄の時は空欄。以外は、sheet1の表から値を表示。(○○部の1月の値を表示) 以上が、別添添付の詳細です。 そのほかのやり方として、ピボットテーブルでも同じようなことができると思います。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート2は実際には4月分とシート名をした場合には4月分のシートでA1セルに入力する式は簡単です。作業グループを組んでからA1セルには次の式を入力します。 =TRIM(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,10)) これでシート名そのものがA1セルに表示されます。 C3エルに入力する式は前回と変わりません。

noriger
質問者

お礼

ありがとうございます。 おかげで業務がスムーズに進められるようになりました!

回答No.1

2つ目以降のシートのC3セルに以下のように入力します。 =HLOOKUP(SUBSTITUTE(LEFT($A$1,2),"月","")&"月",'Sheet1(入力用)'!$2:$6,ROW(C3)-1,FALSE) ※シート名('Sheet1(入力用)')は状況によって変更して下さい。 ※1月などの月を表す数字は、全角か半角を統一しないと正しい結果がでません。 それを、C6までコピーすればどのシートでも大丈夫かと思います。 ◆数式の解説◆ シート2以降のA1セルの文字(画像でいう「1月分データ」)から、何月かというのを判別します。 1月と12月では1文字と2文字で異なるため、少しややこしい式にしています。 色んな方法はありますが、A1セルの左から2文字をとって、10~12月の時には「月」をくっつけています。 その何月かを判別させたら、シート1のデータより、 HLOOKUP関数を使ってデータを取得するようにしています。 そのシートのA1セルの文字によって取得するデータが変わってきますので、 数式は一つで大丈夫になると思います。 色んなやり方ができますので、参考になれば幸いです。

noriger
質問者

お礼

ありがとうございます。とてもわかりやすい説明で、私でも うまく出来ました(笑)!! 本当に助かりました。

関連するQ&A