同じ日付のセルを同じ行に表示したい | |
---|---|
[194550] 同じ日付のセルを同じ行に表示したい- ■親トピック/記事引用/メール受信=ON■ □投稿者/ junjun -(2021/12/23(17:22)) □U R L/ 皆さま、お忙しい中申し訳ございません。 下記をご教示くださいませ。 タイムカードの集計をしているのですが、 お店の営業日と勤務日が一致していないデータがあります。 同じ日付を同列にするのはどのようにしたらよいでしょうか。 例) A | B | C 1 営業日 | 出勤時刻 | 退勤時刻 2 2021/10/1 | 2021/10/2 10:30 | 2021/10/2 22:00 3 2021/10/2 | 2021/10/3 10:30 | 2021/10/2 21:00 4 2021/10/5 | 2021/10/6 11:00 | 2021/10/2 22:00 下記のようにしたいと思っております。 A | B | C 1 営業日 | 出勤時刻 | 退勤時刻 2 2021/10/1 | | 3 2021/10/2 | 2021/10/2 10:30 | 2021/10/2 22:00 4 2021/10/3 | 2021/10/3 10:30 | 2021/10/2 21:00 5 2021/10/4 | | 6 2021/10/5 | | 7 2021/10/6 | 2021/10/6 11:00 | 2021/10/2 22:00 色々なネットの記事、本などを読んだのですが分からないでいます。 ご教示いただけますと幸いです。 なにとぞ、宜しくお願い申し上げます。 ++++++++++++++++++++ OS ⇒OTHER Version⇒Excel 2007 ++++++++++++++++++++ |
[194551] Re[1]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2021/12/23(19:32)) □U R L/ 営業日以外も出勤があったりする、ってことなんですね? <営業日 シート 結果図> 行 ______A______ ________B________ ________C________ _D_ ____E____ _______F_______ _______G_______ 1 営業日 出勤時刻 退勤時刻 2 2021/10/1 2021/10/2 10:30 2021/10/2 22:00 2021/10/1 3 2021/10/2 2021/10/3 10:30 2021/10/2 21:00 2021/10/2 2021/10/2 10:30 2021/10/2 22:00 4 2021/10/5 2021/10/6 11:00 2021/10/2 22:00 2021/10/3 2021/10/3 10:30 2021/10/2 21:00 5 2021/10/4 6 2021/10/5 7 2021/10/6 2021/10/6 11:00 2021/10/2 22:00 Sub TEST() Dim r As Range, cel As Range Dim StDay As Long, EdDay As Long Dim Result Dim dys As Long StDay = CLng(Application.Min(Range("A:C"))) EdDay = CLng(Application.Max(Range("A:C"))) dys = EdDay - StDay + 1 With Range("E2") '取り敢えず、打ち出し先をE2として、日付だけ埋めてみる .Value = StDay .AutoFill Destination:=.Resize(dys), Type:=xlFillDays Result = .Resize(dys, 3).Value '日付の配列を格納 End With Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp)) For Each cel In r If cel <> "" Then '念の為 Result(CLng(cel) - StDay + 1, 2) = cel Result(CLng(cel) - StDay + 1, 3) = cel.Offset(, 1) End If Next Range("E2").Resize(dys, 3) = Result End Sub |
[194552] Re[2]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=OFF■ □投稿者/ ヘンリー -(2021/12/23(19:40)) □U R L/ 別の掲示板を見てメモ帳に解説を書いて、 いざ投稿しようと思ったらマルチポストに気づきました。 時間の無駄をしてしまいました。 という事で、マルチポストはやめた方が良いと思います。 |
[194553] Re[2]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=OFF■ □投稿者/ junjun -(2021/12/24(11:50)) □U R L/ > 営業日以外も出勤があったりする、ってことなんですね? > > <営業日 シート 結果図> > 行 ______A______ ________B________ ________C________ _D_ ____E____ _______F_______ _______G_______ > 1 営業日 出勤時刻 退勤時刻 > 2 2021/10/1 2021/10/2 10:30 2021/10/2 22:00 2021/10/1 > 3 2021/10/2 2021/10/3 10:30 2021/10/2 21:00 2021/10/2 2021/10/2 10:30 2021/10/2 22:00 > 4 2021/10/5 2021/10/6 11:00 2021/10/2 22:00 2021/10/3 2021/10/3 10:30 2021/10/2 21:00 > 5 2021/10/4 > 6 2021/10/5 > 7 2021/10/6 2021/10/6 11:00 2021/10/2 22:00 > > > Sub TEST() > Dim r As Range, cel As Range > Dim StDay As Long, EdDay As Long > Dim Result > Dim dys As Long > > StDay = CLng(Application.Min(Range("A:C"))) > EdDay = CLng(Application.Max(Range("A:C"))) > dys = EdDay - StDay + 1 > > With Range("E2") '取り敢えず、打ち出し先をE2として、日付だけ埋めてみる > .Value = StDay > .AutoFill Destination:=.Resize(dys), Type:=xlFillDays > Result = .Resize(dys, 3).Value '日付の配列を格納 > End With > > Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp)) > > For Each cel In r > If cel <> "" Then '念の為 > Result(CLng(cel) - StDay + 1, 2) = cel > Result(CLng(cel) - StDay + 1, 3) = cel.Offset(, 1) > End If > Next > > Range("E2").Resize(dys, 3) = Result > End Sub > |
[194554] Re[3]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=OFF■ □投稿者/ junjun -(2021/12/24(11:52)) □U R L/ > 別の掲示板を見てメモ帳に解説を書いて、 > いざ投稿しようと思ったらマルチポストに気づきました。 > > 時間の無駄をしてしまいました。 > という事で、マルチポストはやめた方が良いと思います。 ヘンリー様 ご配慮が足らずに誠に申し訳ございませんでした。 以後注意致します。 大変失礼いたしました。 |
[194557] Re[4]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2021/12/24(12:33)) □U R L/ Sub TEST() Dim r As Range, cel As Range Dim StDay As Date, EdDay As Date Dim Result Dim dys As Long StDay = Application.EoMonth(Application.Max(Columns("A")), -1) + 1 dys = Day(Application.EoMonth(StDay, 0)) EdDay = StDay + dys - 1 With Range("E2") '取り敢えず、打ち出し先をE2として、日付だけ埋めてみる .Value = StDay .AutoFill Destination:=Range("E2").Resize(dys), Type:=xlFillDays Result = .Resize(dys, 3).Value '日付の配列を格納 End With Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp)) For Each cel In r If cel <> "" Then '念の為 Result(CLng(cel) - StDay + 1, 2) = cel Result(CLng(cel) - StDay + 1, 3) = cel.Offset(, 1) End If Next Range("E2").Resize(dys, 3) = Result End Sub |
[194561] Re[5]: 同じ日付のセルを同じ行に表示したい- ■ / 記事引用/メール受信=OFF■ □投稿者/ junjun -(2021/12/24(15:16)) □U R L/ > Sub TEST() > Dim r As Range, cel As Range > Dim StDay As Date, EdDay As Date > Dim Result > Dim dys As Long > > StDay = Application.EoMonth(Application.Max(Columns("A")), -1) + 1 > dys = Day(Application.EoMonth(StDay, 0)) > EdDay = StDay + dys - 1 > > With Range("E2") '取り敢えず、打ち出し先をE2として、日付だけ埋めてみる > .Value = StDay > .AutoFill Destination:=Range("E2").Resize(dys), Type:=xlFillDays > Result = .Resize(dys, 3).Value '日付の配列を格納 > End With > > Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp)) > > For Each cel In r > If cel <> "" Then '念の為 > Result(CLng(cel) - StDay + 1, 2) = cel > Result(CLng(cel) - StDay + 1, 3) = cel.Offset(, 1) > End If > Next > > Range("E2").Resize(dys, 3) = Result > End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[194594] Re[6]: 同じ日付のセルを同じ行に表示したい- ■記事引用/メール受信=ON■ □投稿者/ junjun -(2022/01/11(17:04)) □U R L/ 半平太様 いつもお世話になります! 先日はコードをご教示下さり誠にありがとうございました。 頂いた内容を元に検証しているのですが、 下記の部分の意味が分からないでいます。 お忙しい中誠に申し訳ございませんが、 ご教示いただけますでしょうか。 *抜粋 For Each cel In r > If cel <> "" Then '念の為 > Result(CLng(cel) - StDay + 1, 2) = cel > Result(CLng(cel) - StDay + 1, 3) = cel.Offset(, 1) > End If > Next * *抜粋ここまで 上記3行目、4行目の+1,2と+1,3が何を意味するか分からないでいます。 Offset(,1)はF列→E列へ参照範囲を移動しているのが分かったのですが、 3行目、4行目が分らず・・・です。 (CLngは丸めと認識しております) ご教示いただければ幸いでございます。 なにとぞ、宜しくお願い申し上げます。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
このトピックに書きこむ |
---|