- ベストアンサー
エクセルで作成したスケジュール予定を別シートに記載
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 前半部分のみ、関数での一例です。 ↓の画像のようにSheet1に日付・予定を入力すると、Sheet2に表示させる方法です。 ※ Sheet1の1行目とSheet2の1行目は同じ並びとします。 ※ Sheet1のデータには重複はないという前提です。 Sheet2のB2セル(セルの表示形式は「日付」にしておきます)に =IF(COUNTIF(Sheet1!B:B,$A2),INDEX(Sheet1!$A$1:$A$1000,SUMPRODUCT((Sheet1!$B$1:$G$1000=$A2)*ROW($A$1:$A$1000))),"") という数式を入れ列方向と行方向にオートフィルでコピーすると 画像のような感じになります。 質問ではこの反対の操作もご希望のようですが、データを入力した時点で数式が消えてしまいますので関数ではどちらか一方の方法しか無理です。 どうしても両Sheetの入力で他Sheetに反映させたい場合はVBAになってしまうと思います。 参考にならなかったらごめんなさいね。m(_ _)m
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
こういう表の組み換えは関数でやるには複雑になる。やりたいならエクセルVBAを勉強して、仕事に使えるレベルになってください。 だいたい、仕事にエクセルを使うならVBAが出来ないと、直ぐ行き詰まると思う。 ーー 簡単な例では(同一日で、りんご、みかんの両方に、aaaがあることはない場合) 例データ Sheet2 A1:D6 -は空白セル - りんご みかん 柿 1月1日 aaa 1月2日 - bbb 1月3日 ddd - eee 1月4日 - - ccc 1月5日 fff ggg hhh 質問者は、画像でなくて、こういう風にテキストでデータ例を作ってほしい。簡単にテストに使えるので。 ーー コード 標準モジュールに Sub test01() Dim cl As Range Dim sh1, sh2 Set sh1 = Worksheets("Sheet2") Set sh2 = Worksheets("Sheet3") d1 = sh1.Range("A65536").End(xlUp).Row '-- For Each cl In sh1.Range("B2: D" & d1) 'データがB-D列にある場合の例 If cl <> "" Then r = sh2.Range("a1:A100").Find(cl).Row sh2.Cells(r, cl.Column) = sh1.Cells(cl.Row, "A") End If Next End Sub ーー 結果 Sheet3 A1:C9 -は空白セル B2:C9は日付書式にしておくこと。 - りんご みかん 柿 aaa 2012/1/1 bbb - 2012/1/2 ccc - - 2012/1/4 ddd 2012/1/3 eee - - 2012/1/3 fff 2012/1/5 ggg - 2012/1/5 hhh - - 2012/1/5
お礼
大変丁重なご返答、ありがとうございました。 まだ、仕事で使えるレベルでないことは、重々承知しております。 imogasiさまのおっしゃられるとおり、今後もっとエクセルVBAを勉強して、仕事に活かせるようになりたいと思っております。 貴重なご意見、ありがとうございました。
お礼
大変わかりやすいご返答、ありがとうございました。 教えて頂きましたとおりに作成いたしましたところ、 無事に表示されました。 逆の方法は、もっとVBAを勉強して、行えるようになりたいと思います。 今回は、教えて頂きまして、大変助かりました。ありがとうございました。