Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


107 / 13645 ツリー ←次へ | 前へ→

【81961】連続するした数値の判定について daikonsan 22/2/14(月) 9:48 質問[未読]
【81962】Re:連続するした数値の判定 マナ 22/2/14(月) 12:32 発言[未読]
【81963】Re:連続するした数値の判定 daikonsan 22/2/14(月) 13:17 回答[未読]
【81964】Re:連続するした数値の判定 daikonsan 22/2/14(月) 16:05 発言[未読]
【81965】Re:連続するした数値の判定 マナ 22/2/14(月) 18:43 発言[未読]
【81966】Re:連続するした数値の判定 daikonsan 22/2/15(火) 16:17 お礼[未読]
【81967】Re:連続するした数値の判定 daikonsan 22/2/16(水) 10:26 発言[未読]
【81968】Re:連続するした数値の判定 daikonsan 22/2/16(水) 10:34 発言[未読]
【81969】Re:連続するした数値の判定 マナ 22/2/16(水) 20:59 発言[未読]

【81961】連続するした数値の判定について
質問  daikonsan  - 22/2/14(月) 9:48 -

引用なし
パスワード
     F列
1 項目名
2 2021/02/01
3 2021/02/02
4 2021/02/03
5 2021/02/04
6 2021/02/05
7 2021/02/06
8 2021/02/07
9 2021/02/08
10 2021/02/09
11 2021/02/10
12 2021/02/11
13 2021/02/12
14 2021/02/13
15 2021/02/14
16 2021/02/15
17 2021/02/16
18 2021/02/17
19 2021/02/18
20 2021/02/19
21 2021/02/20
22 2021/02/21
23 2021/02/22
24 2021/02/23
25 2021/02/24
26 2021/02/25
27 2021/02/26
28 2021/02/27
29 2021/02/28
30 2021/02/01
31 2021/02/02
32 2021/02/03
33 2021/02/04
34 2021/02/05
35 2021/02/06
36 2021/02/07
37 2021/02/08
38 2021/02/09
39 2021/02/10
40 2021/02/11
41 2021/02/12
42 2021/02/13
43 2021/02/14
44 2021/02/15
45 2021/02/16
46 2021/02/17
47 2021/02/18
48 2021/02/19
49 2021/02/20
50 2021/02/21
51 2021/02/22
52 2021/02/23
53 2021/02/24
54 2021/02/25
55 2021/02/26
56 2021/02/27
57 2021/02/28

お世話になります。

上記のように入力されている日付があります。(日付の繰り返しは任意の回数分行う)
日付をもとに別ブックからIDを日付分コピー→日付が最終日から初日に変わったら別IDが別ブックコピーされる。という風にしたいのですが、日付が変わった際の判定はどのようにすればよろしいでしょうか。
IDは一意の値で連番などではないです。
想定している結果は以下のような形です。

  B列         F列
1 項目名
2 1111(ID)  2021/02/01
3 1111(ID)  2021/02/02
4 1111(ID)  2021/02/03
5 1111(ID)  2021/02/04
6 1111(ID)  2021/02/05
7 1111(ID)  2021/02/06
8 1111(ID)  2021/02/07
9 1111(ID)  2021/02/08
10 1111(ID)  2021/02/09
11 1111(ID)  2021/02/10
12 1111(ID)  2021/02/11
13 1111(ID)  2021/02/12
14 1111(ID)  2021/02/13
15 1111(ID)  2021/02/14
16 1111(ID)  2021/02/15
17 1111(ID)  2021/02/16
18 1111(ID)  2021/02/17
19 1111(ID)  2021/02/18
20 1111(ID)  2021/02/19
21 1111(ID)  2021/02/20
22 1111(ID)  2021/02/21
23 1111(ID)  2021/02/22
24 1111(ID)  2021/02/23
25 1111(ID)  2021/02/24
26 1111(ID)  2021/02/25
27 1111(ID)  2021/02/26
28 1111(ID)  2021/02/27
29 1111(ID)  2021/02/28
30 2222(ID)  2021/02/01
31 2222(ID)  2021/02/02
32 2222(ID)  2021/02/03
33 2222(ID)  2021/02/04
34 2222(ID)  2021/02/05
35 2222(ID)  2021/02/06
36 2222(ID)  2021/02/07
37 2222(ID)  2021/02/08
38 2222(ID)  2021/02/09
39 2222(ID)  2021/02/10
40 2222(ID)  2021/02/11
41 2222(ID)  2021/02/12
42 2222(ID)  2021/02/13
43 2222(ID)  2021/02/14
44 2222(ID)  2021/02/15
45 2222(ID)  2021/02/16
46 2222(ID)  2021/02/17
47 2222(ID)  2021/02/18
48 2222(ID)  2021/02/19
49 2222(ID)  2021/02/20
50 2222(ID)  2021/02/21
51 2222(ID)  2021/02/22
52 2222(ID)  2021/02/23
53 2222(ID)  2021/02/24
54 2222(ID)  2021/02/25
55 2222(ID)  2021/02/26
56 2222(ID)  2021/02/27
57 2222(ID)  2021/02/28

【81962】Re:連続するした数値の判定
発言  マナ  - 22/2/14(月) 12:32 -

引用なし
パスワード
   ご使用のエクセルのバージョンを教えてください

【81963】Re:連続するした数値の判定
回答  daikonsan  - 22/2/14(月) 13:17 -

引用なし
パスワード
   ▼マナ さん:
2019 MSO バージョン 2201 ビルド 16.0.14827.20186 になります。

【81964】Re:連続するした数値の判定
発言  daikonsan  - 22/2/14(月) 16:05 -

引用なし
パスワード
   ■補足
別ブックのIDですが、毎行あるのではなく、4行間隔で別ブックに入力されています。(以下のような形)

  ID
4 1111
5
6
7
8
9 2222
10
11
12
13
14 3333

【81965】Re:連続するした数値の判定
発言  マナ  - 22/2/14(月) 18:43 -

引用なし
パスワード
   ▼daikonsan さん:


こんな感じで。下のセル値が小さいかどうかで判定

Sub test()
  Dim ws As Worksheet, a
  Dim r As Range, c As Range
  Dim k As Long
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  Set r = Range("F4", Cells(Rows.Count, 6).End(xlUp))
  k = 0
  For Each c In r
    c.Offset(, -1).Value = a(k)
    If c.Value > c.Offset(1).Value Then k = k + 1
  Next
  
End Sub


前の質問の続きで
IDの種類だけ日付コピーするなら


Sub test2()
  Dim ws As Worksheet, a
  Dim r As Range, v
  Dim n As Long
  Dim k As Long
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  Set r = Range("F2", Cells(Rows.Count, 6).End(xlUp))
  v = r.Value
  n = UBound(v)

  For k = 0 To UBound(a)
    r.Offset(k * n, -1).Value = a(k)
    r.Offset(k * n).Value = v
  Next
  
End Sub


日付もマクロで入力するなら

Sub test3()
  Dim ws As Worksheet, a
  Dim y As Long, m As Long
  Dim d1 As Long, d2 As Long
  Dim v, n As Long
  Dim k As Long
  Dim r As Range
  
  Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
  With ws.Range("A4", ws.Cells(Rows.Count, 1).End(xlUp))
    a = Split(WorksheetFunction.TextJoin(" ", True, .Cells))
  End With
  
  y = 2022
  m = 2
  
  d1 = CLng(DateSerial(y, m, 1))
  d2 = CLng(DateSerial(y, m + 1, 0))
  v = Evaluate("row(" & d1 & ":" & d2 & ")")
  n = UBound(v)

  For k = 0 To UBound(a)
    Set r = Range("F2").Resize(n).Offset(k * n)
    r.Offset(, -1).Value = a(k)
    r.Value = v
  Next
  
End Sub

【81966】Re:連続するした数値の判定
お礼  daikonsan  - 22/2/15(火) 16:17 -

引用なし
パスワード
   ▼マナ さん:
ありがとうございます!
別ブックのID分日付を入力する処理は思いつきませんでした。
本当にありがとうございました!

【81967】Re:連続するした数値の判定
発言  daikonsan  - 22/2/16(水) 10:26 -

引用なし
パスワード
   ▼マナ さん:
追加質問で大変恐縮なのですが、ご教授いただけないでしょうか。

別ブック(IDと同じブック)にチェック欄があります。上記のようにID、日付などをコピーした後、
チェック欄も同じように日付の右側(G列〜K列)へ転記したいです。
こちらはIDごとにチェック(○)が入っている箇所が違うので、IDの数分ループする中でさらに5回(各IDのチェック行分)ループさせる必要があるのでしょうか。
また、別ブックのチェックは横持ちで、コピー先は縦持ち?になるので、詰まっています。


別ブックのレイアウトは次のような形です。
※直書きするとずれてしまうので、スクリーンショット(URL)を貼り付けます。

【81968】Re:連続するした数値の判定
発言  daikonsan  - 22/2/16(水) 10:34 -

引用なし
パスワード
   ▼マナ さん:
スクリーンショット(先頭にエイチティーティーピー://をつけてください)
gyazo.com/bbeb11fae8b93069c88f9366bb552304

【81969】Re:連続するした数値の判定
発言  マナ  - 22/2/16(水) 20:59 -

引用なし
パスワード
   ▼daikonsan さん:

何がしたいかイメージできません。
理解できたら、↓で回答するかもしれません。
www.excel.studio-kazu.jp/kw/20220216103736.html

107 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free