簡體   English   中英

Excel幫助:使用一個單元格中的文本引用另一工作表中的值

[英]Excel Help: Using text from one cell to reference values in another worksheet

我有一個工作表,其中在一個欄中列出了我所在州的所有代表,在另一欄中列出了他們代表的縣。 其中一些代表一個縣,而其他代表多個縣(一些單元格表示“ A和B”,另一些單元格則表示“ A,B和C”)。

在不同的工作表上,我在一個列中列出了所有縣,在第二列中診斷出患有某種疾病的人數在該縣中,而在那個縣中,患有該疾病的總人數則列在第三列。

基本上,我希望能夠將它們合並在一起,這樣我將獲得以下內容:

專欄1:約翰·史密斯

第2欄:X郡,Y郡和Z郡

第3欄:389(將在第2個工作表上找到的所有3個縣的值相加得出診斷出的#個值)

第4欄:4392(將在第二個工作表上找到的所有3個縣的值相加)

有什么方法可以利用第一張工作表(每個代表代表的縣)的第二列自動引用第二個工作表的值並將它們相加,以使每個代表在其下的案件總數達到多少?

我當然可以手動完成。 但是,我希望能夠在明年輕松進行更改。

我的直覺是使用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

我已經對此進行了測試,它將總結出一些東西。 您可能需要對設置進行一些調整,例如工作表名稱(或索引)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM