0

我有一个工作表,在一个列中列出了我所在州的所有代表,在另一列中列出了他们所代表的县。其中一些代表一个县,而另一些代表多个县(一些单元格表示“A 和 B”,而其他单元格表示“A、B 和 C”)。

在另一张工作表上,我在一栏列出了所有县,第二栏是被诊断患有某种疾病的人数,第三栏是该县患有该疾病的总人数。

基本上,我希望能够将这些合并在一起,这样我就会有这样的东西:

第 1 列:约翰·史密斯

第 2 列:X 县、Y 县和 Z 县

第 3 列:389(在第二张工作表中找到的所有 3 个县值的总和)

第 4 列:4392(将第二张工作表上的所有 3 个县值加起来)

有没有办法利用第一个工作表上的第二列(每个代表所代表的县)自动参考第二个工作表的值并将它们加在一起,从而为每个代表提供其下的病例总数?

当然,我可以手动完成。但是,我希望它能够在明年轻松更改。

4

1 回答 1

0

我的直觉是使用 VBA 获取第 2 列,展开列表,在工作表 2 中搜索从第 2 列获取的值,然后在第 3 列中构建一个公式以引用在第 2 列中找到的值。第 4 列也是如此。喜欢:

Sub Stuff()
    Dim numberOfReps As Integer
    Dim numberOfCounties As Integer
    numberOfReps = 20
    numberOfCounties = 25

    Dim i As Integer
    Dim counties As String
    Dim diagnosedEquation As String
    Dim livingEquation As String
    Dim rawVal As String

    For i = 1 To numberOfReps
        rawCounties = Sheets("Sheet1").cells(i, 2).Value
        countiesArray = Split(rawCounties, ", ")

        For j = 1 To numberOfCounties
            rawVal = Sheets("Sheet2").cells(j, 1).Value
            If (ListContains(rawVal, countiesArray)) Then
                If (livingEquation = "") Then
                    livingEquation = "=SUM(Sheet2!C" & j
                Else
                    livingEquation = livingEquation & "+Sheet2!C" & j
                End If
                If (diagnosedEquation = "") Then
                    diagnosedEquation = "=SUM(Sheet2!B" & j
                Else
                    diagnosedEquation = diagnosedEquation & "+Sheet2!B" & j
                End If
            End If
        Next j

        If (Not diagnosedEquation = "") Then diagnosedEquation = diagnosedEquation & ")"
        If (Not livingEquation = "") Then livingEquation = livingEquation & ")"

        Sheets("Sheet1").cells(i, 3).Value = diagnosedEquation
        Sheets("Sheet1").cells(i, 4).Value = livingEquation
        diagnosedEquation = ""
        livingEquation = ""
    Next i
End Sub

Private Function ListContains(needle As String, haystack As Variant)
    For Each straw In haystack
        If (needle = straw) Then ListContains = True
    Next straw
End Function

我已经对此进行了测试,它会总结一下。您可能需要针对您的设置对其进行一些调整,例如工作表名称(或索引)。

于 2013-02-02T04:29:38.300 回答