Excel帮助:使用一个单元格中的文本引用另一个工作表中的值

时间:2013-02-01 22:40:02

标签: excel

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

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

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

第1栏:约翰史密斯

第2栏:CountyX,CountyY,&县Z.

第3列:389(在第2张工作表中找到的所有3个县值,用于诊断的#)

第4栏:4392(总计在第2张工作表上找到的所有3个县值)

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

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

1 个答案:

答案 0 :(得分: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

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