回答編集履歴

1

説明追記

2021/12/13 08:13

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -13,4 +13,38 @@
13
13
  "m/d"書式だと桁数が固定でないので正しく大小関係のチェックはできません。
14
14
 
15
15
  例えば "4/1" と "12/31" だと "4/1" の方が大きいと判断される。
16
- 文字列は前から順に比較していくので。
16
+ 文字列は前から順に比較していくので。
17
+
18
+ ---
19
+
20
+ 意味不明なコードが紛れ込んでいますね。
21
+ それぞれのコードを意味を理解してください。
22
+
23
+ とりあえず下記でどうですか。
24
+
25
+ ```vba
26
+ Sub 年齢計算()
27
+ Dim ws1 As Worksheet
28
+ Dim ws2 As Worksheet
29
+ Set ws1 = Sheets("シート1")
30
+ Set ws2 = Sheets("シート2")
31
+
32
+ Dim LastRow As Long
33
+ LastRow = ws1.Cells(Rows.Count, 10).End(xlUp).Row
34
+
35
+ Dim 基準日 As Date
36
+ Dim 誕生日 As Date
37
+ Dim 年齢 As Variant
38
+
39
+ 基準日 = ws2.Range("AK3")
40
+
41
+ Dim i As Long
42
+ For i = 2 To LastRow
43
+ 誕生日 = ws1.Cells(i, 10).Value
44
+ 年齢 = DateDiff("yyyy", 誕生日, 基準日) + _
45
+ (Format(誕生日, "mm/dd") > Format(基準日, "mm/dd"))
46
+ ws1.Cells(i, 11).Value = 年齢
47
+ Next i
48
+
49
+ End Sub
50
+ ```