我有一张excel表格,上面有人的名字,年龄,性别和健康状况。我正在尝试使用vba自动将A列中所有不健康(有病)和健康(无病)的人分组,并将其写入单个单元格(例如E9)。我可以很好地遍历每个人的单元格,但是我编写的代码只用最后一个值覆盖了单元格。有没有人能协助一下逻辑,让所有的信息都能正确显示?
当前代码的作用:

我想让它做的是:

下面是我的代码:
Sub test()
Dim Names As Range
Dim Age As Range
Dim Health As Range
Dim LastRow As Long
LastRow = Worksheets("Sheet1").Cells(65536, "A").End(xlUp).Row
Set Names = Worksheets("Sheet1").Range("A2:A" & LastRow)
For Each Name In Names
Set Age = Worksheets("Sheet1").Range("B" & Name.Row)
Set Health = Worksheets("Sheet1").Range("D" & Name.Row)
If Age.Value = "Young" Or Age.Value = "Old" And Health.Value = "Sick" Then
Worksheets("Sheet1").Range("E9") = "Unhealthy: " & Name.Value
End If
If Age.Value = "Young" Or Age.Value = "Old" And Health.Value = "Not Sick" Then
Worksheets("Sheet1").Range("E9") = "Healthy: " & Name.Value
End If
Next
End Sub发布于 2021-11-10 20:47:06
创建两个变量来保存不健康和健康的名字,然后在循环后对单元进行写操作:
Sub test()
Dim Names As Range
Dim Age As Range
Dim Health As Range
Dim LastRow As Long
Dim hlt As String
Dim unhlt As String
Dim hdl As String
Dim uhdl As String
LastRow = Worksheets("Sheet1").Cells(65536, "A").End(xlUp).Row
Set Names = Worksheets("Sheet1").Range("A2:A" & LastRow)
For Each Name In Names
Set Age = Worksheets("Sheet1").Range("B" & Name.Row)
Set Health = Worksheets("Sheet1").Range("D" & Name.Row)
If Age.Value = "Young" Or Age.Value = "Old" And Health.Value = "Sick" Then
unhlt = unhlt & uhdl & Name.Value
uhdl = ";"
End If
If Age.Value = "Young" Or Age.Value = "Old" And Health.Value = "Not Sick" Then
hlt = hlt & hdl & Name.Value
hdl = ";"
End If
Next
Worksheets("Sheet1").Range("E9") = "Unhealthy: " & unhlt & Chr(10) & "Healthy: " & hlt
End Subhttps://stackoverflow.com/questions/69919955
复制相似问题