首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从一行中的不同列获取值并将其写入单独行的单个单元格,而不使用excel vba覆盖。

如何从一行中的不同列获取值并将其写入单独行的单个单元格,而不使用excel vba覆盖。
EN

Stack Overflow用户
提问于 2021-11-10 20:41:17
回答 1查看 25关注 0票数 0

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

当前代码的作用:

我想让它做的是:

下面是我的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-10 20:47:06

创建两个变量来保存不健康和健康的名字,然后在循环后对单元进行写操作:

代码语言:javascript
复制
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 Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69919955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档