我有一个工作表,列出了我所在州的所有代表,以及他们在另一列中所代表的县。其中一些代表一个县,而另一些代表多个县(一些单元格表示" A和B"其他单位有" A,B,& C")。
在另一张工作表上,我列出了一列中的所有县,第二列被诊断患有某种疾病的人数,以及该县患病的第三列人数。
基本上,我希望能够将这些合并在一起,这样我就会有这样的东西:
第1栏:约翰史密斯
第2栏:CountyX,CountyY,&县Z.第3列:389(在第2张工作表中找到的所有3个县值,用于诊断的#)
第4栏:4392(总计在第2张工作表上找到的所有3个县值)
有没有办法利用第一个工作表上的第二列(每个代表代表的县)自动引用第二个工作表值并将它们加在一起,以便为每个代表提供其下的案例总数?
当然,我可以手动完成。但是,我希望能够在明年轻松改变它。
答案 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
我已经对此进行了测试,它将总结一下。您可能需要对设置进行一些调整,例如工作表名称(或索引)。