
目的は仕事で何日に誰が休むむかを一目で知りたくてエクセルで作成したカレンダーを作りました(縦型日付表示) 現在は届けの用紙が来たらカレンダーに手打ちしてます。
(シート1) 種類は名前に色分けをしたかったので種類を入れてます。
(上手く作成できたら種類によって名前に色わけとかしたくて種類を作りました)
横に名前が出るようにしてます。同じ日に休みの人が増えれば HIJKと横に続きます。
A B C D E F G
1 日付 曜日 名前 種類 名前 種類
2 1日 桃 有給 (みかん) (休み)
3 2日
4 3日
以下日にちは月末まであります。
別のシート(シート2)で作成したデータを反映させたいのですが同じ日付でデータがある場合
どうすれば反映されるのでしょうか?ためしにD3にカウント式(=COUNTIF($A$3:$A3,$A3))を入れて
順番をつけてみました。
A B C D
1 日付 名前 種類 カウント
2 5/1 桃 有給 1
3 5/3 奈々 半日 1
4 5/1 みかん 休み 2
以下休み届けなどが出されたら随時追加します。
わからないなりにネットで見て数式を入れてみました。
シート1のC2に
=IF(ISERROR(VLOOKUP(A2,シート2!$A:$C,2,0)),"",VLOOKUP(A2,シート2!$A:$C,2,0))
C3に
=IF(ISERROR(VLOOKUP(A2,休み!$A:$D,3,0)),"",VLOOKUP(A2,休み!$A:$D,3,0))
入力すると始めの 5/1 桃 有給はカレンダーにあがるのですが5/1 みかん 休みを出せません
あまりエクセルなどに詳しくなく、他の数式なども活用できるのかこういう表がそもそもエクセルでできるのかも勉強不足でわかりません。なんだかマネて作成したらあまりに長くて引数が足りませんみたいな表示がでました。
お手数をおかけしますが、教えていただけたら嬉しいです。よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
こんばんは!
お望みの方法とは異なるかもしれませんが、手っ取り早くVBAでやってみました。
まずSheet1にカレンダーを作成します。
↓の画像で上側がSheet1、下側がSheet2とします。
(お手元のSheetは画像通りの配置にしてください)
まずSheet1のA1セルに西暦年を、C1セルに表示させたい月の数値を入力します。
A4セル(セルの表示形式はユーザー定義から d日 としておく)に
=IF(MONTH(DATE(A$1,C$1,ROW(A1)))=C$1,DATE(A$1,C$1,ROW(A1)),"")
という数式を入れます。
B4セル(セルの表示形式はユーザー定義から aaa としておく)に
=IF(A4="","",A4)
という数式を入れ → A4・B4セルを範囲指定 → B4セルのフィルハンドルで月末の34行目までコピー!
これでA1・C1セルの数値を入れ替えるだけでカレンダーができます。
次にAlt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト
Dim i As Long, j As Long, lastRow As Long, lastCol As Long, wS As Worksheet 'この行から
Sub 表示()
Set wS = Worksheets("Sheet1")
lastCol = wS.Cells(3, Columns.Count).End(xlToLeft).Column
With Worksheets("Sheet2")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "C")).ClearContents
End If
For i = 4 To 34
For j = 3 To lastCol Step 2
If wS.Cells(i, j) <> "" Then
With .Cells(Rows.Count, "A").End(xlUp).Offset(1)
.Value = wS.Cells(i, "A")
.Offset(, 1) = wS.Cells(i, j)
.Offset(, 2) = wS.Cells(i, j + 1)
End With
End If
Next j
Next i
End With
End Sub 'この行まで
そしてExcel画面に戻り、画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim lastCol As Long
lastCol = Cells(3, Columns.Count).End(xlToLeft).Column
If Intersect(Target, Range(Cells(4, "C"), Cells(34, lastCol))) Is Nothing Then Exit Sub
Call 表示
End Sub 'この行まで
最後にExcel画面に戻り、Sheet2のA列の表示形式を「日付」にしておきます。
これでSheet1のデータ変更があるたびにSheet2に画像のような感じで表示されます。m(_ _)m

回答1の方から教えて頂いたように、私がバージョン情報を書いていない中でご解答いただきありがとうございます。
回答が早くてこちらにまずビックりしております。
しかも画像付きで!!カレンダーが大変みやすいですね。
内容も詳しく書いていただきすごく助かります。
これから早速やってみたいと思います。本当にありがとうございました。
No.1
- 回答日時:
シート1にカレンダー,シート2に休暇届一覧とします
簡単のため,次のように準備します
シート1:
A2にはとりあえず
5/1
を記入,以下コピーして5/31まで準備します(後述)
B2は
=TEXT(A2,"aaa;;;")
以下コピー
シート2:
A列には年/月/日を記入します
簡単のためB列に「カウント」を用意します
B2:
=IF(A2="","",TEXT(A2,"yyyymmdd-")&COUNTIF($A$2:A2,A2))
以下コピー
邪魔ならB列は隠しておきます
C列,D列に名前,休暇種別を記入します
改めてシート1:
C2には
=IF(COLUMN(A2)/2>COUNTIF(Sheet1!$A:$A,$A2),"",VLOOKUP(TEXT($A2,"yyyymmdd-")&TEXT(COLUMN(A2)/2,"0"),Sheet1!$B:$D,MOD(COLUMN(A2)+1,2)+2,FALSE))
右にコピー,下にコピーして完成。
#参考
実際には無意味に数式を複雑にしないため
C2には
=IF(COLUMN(B2)/2>COUNTIF(Sheet1!$A:$A,$A2),"",VLOOKUP(TEXT($A2,"yyyymmdd-")&COLUMN(B2)/2,Sheet1!$B:$D,2,FALSE))
D2に
=IF(C2="","",VLOOKUP(TEXT($A2,"yyyymmdd-")&COLUMN(B2)/2,Sheet1!$B:$D,3,FALSE))
と記入,C2:D2を2つセットで右に下にコピーします。
#ご利用のエクセルのバージョンがご相談に書かれていませんが,エクセル2007以降ならもっと簡単な数式に出来ます。ご相談投稿では,普段ご利用のソフトのバージョンまでキチンと明記することを憶えて下さい。次回以降のご参考に。
#参考:
A2の5/1は,実際にはどこかのセルに年と月の数字を記入して計算によって表示させ,さらにセルの書式設定の表示形式のユーザー定義で
d日
のように設定して表示を整えます。
A列の縦のカレンダーを計算式で上手に表示する方法について,別途ご相談を投稿して解決して下さい。
詳しくやり方を書いていただきありがとうございます。
バージョンとか書くの忘れてました・・・・。投稿の仕方も教えていただきありがとうございます。(何を使用しているかわからないと答えようが無いですものね・・。)
こんなに早く回答がもらえるとは思ってなかったし親切に教えていただけるとは考えていなかったのですごく嬉しいです。
これから早速試してみます。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) excel2016でリストからカレンダーに内容を反映させたいです 2 2022/10/27 15:32
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 翌日にお休み予定の従業員がいる場合にアラートを出したい 1 2023/07/11 11:18
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- Excel(エクセル) 『シフト表自動化の作成について』 1 2022/06/02 00:45
- Excel(エクセル) 出勤簿の土、日、休日に色付けできない 2 2022/08/04 20:10
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
おすすめの美術館・博物館、教えてください!
美術館・博物館が大好きです。みなさんのおすすめをぜひお聞きしたいです。
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
別シートのスケジュールリストをカレンダーに反映させたい
Excel(エクセル)
-
Excel2010 リスト型の予定表をカレンダーに反映させたい
Excel(エクセル)
-
エクセル2016でfilter関数がないので、、抜き出す関数をおしえてください。
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでURL挿入後、名前を変...
-
エクセル関数使用で赤色数字を...
-
列幅が変更できなくなった
-
EXCELのデータ修正時に、...
-
表に日付と担当者を入力すると...
-
エクセルで1分あたりの作業量...
-
エクセルで逆さまに印刷したい
-
一つのセルに計算式を入れて別...
-
勤務表で勤務時間が入力されて...
-
エクセルでこれをやってみたい...
-
異なる締め日に対応して支払日...
-
エクセルで入力のあるセルのみ...
-
カレンダー作成 別シートより...
-
複数のセルに入力された年、月...
-
エクセルでの順位に応じた点数...
-
ExcelVBAで選択したセルで平均...
-
EXCELで千円単位を百万円単位に
-
円単位で出来上がったエクセル...
-
3つの条件のうち、2つを満た...
-
A4シール紙を手差し印刷できる...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでURL挿入後、名前を変...
-
エクセル関数使用で赤色数字を...
-
エクセルで入力のあるセルのみ...
-
EXCELのデータ修正時に、...
-
エクセルで逆さまに印刷したい
-
EXCELで千円単位を百万円単位に
-
列幅が変更できなくなった
-
エクセルでの順位に応じた点数...
-
一つのセルに計算式を入れて別...
-
エクセルで1分あたりの作業量...
-
エクセルで前月までの平均を出...
-
3つの条件のうち、2つを満た...
-
勤務表で勤務時間が入力されて...
-
画像(GIF/JPEG Image)をエ...
-
excel2007で特定の行が印刷され...
-
表に日付と担当者を入力すると...
-
エクセルでセルの日付を和暦表...
-
エクセルでこれをやってみたい...
-
エクセルで部屋番号や個人情報...
-
異なる締め日に対応して支払日...
おすすめ情報