我正在尝试执行以下操作,但我无法找出vlookup和sumif的正确顺序。
我应该首先概述一下我所拥有的东西。在sheet1上,我在A列中有一个ID列表(1-60ish,有一些变化),每个ID在B列中都有一个质量(以千克为单位)。根据一组标准,已定义,一些群众彼此相关,需要加以总结。它们如何相关是在sheet2上作为矩阵的轮廓。所有的ID都沿着第一列和最上面的列,以及它们相关的位置,因此应该总结," Y"放在相应的单元格中。最后在sheet3中,我再次在A列中列出了ID列表,我想在sheet2上的矩阵中查找ID所在的行,并将sheet1中的质量求和,其中有一个&# 34; Y"在矩阵中。
例如(如屏幕截图所示),sheet3的B列中的公式在sheet2(显示)的C列中查找ID 26,以识别哪些ID应该求和(用" Y"并且与第3行中的ID有关,以计算组合质量。需要从sheet1求和的质量与ID 23,25,26相关。因此所需的输出是质量23,25,26的总和。
我附上了截图,以便更清楚。
我希望有人可以提供帮助!
答案 0 :(得分:0)
UNTESTED(可能值得您阅读mvce),但请尝试:
=SUMIF(INDIRECT("Sheet2!"&MATCH(VLOOKUP(A4,Sheet1!A:B,2,0),Sheet2!A:A,0)&":"&MATCH(VLOOKUP(A4,Sheet1!A:B,2,0),Sheet2!A:A,0)),"Y",Sheet2!1:1)
答案 1 :(得分:0)
使用VBA。没看到没有标签。这是未经测试的,因为我没有你的矩阵可以使用。
<强>设定:强>
会发生什么:
tempMass
tempMass
tempSum
<强>代码:强>
Sub SumMasses()
Dim lastRow1 As Long, lastRow2 As Long, lastRow3 As Long, lastCol As Long
Dim s1Row As Long, s2Row As Long, s3Row As Long, lCol As Long
Dim s1 As String, s2 As String, s3 As String, tempMass As String
Dim tempSum As Double
s1 = "Sheet1" 'Define Sheet names here
s2 = "Sheet2"
s3 = "Sheet3"
lastRow1 = Sheets(s1).Range("A" & rows.count).End(xlUp).row
lastRow2 = Sheets(s2).Range("A" & rows.count).End(xlUp).row
lastRow3 = Sheets(s3).Range("A" & rows.count).End(xlUp).row
lastCol = Sheets(s2).Cells(3, Columns.count).End(xlToLeft).column 'Get last Column from matrix on Sheet 2, Row 3
For s3Row = 4 To lastRow3
tempSum = 0
'Loop through columns on Matrix to find "Y"
For lCol = 4 To lastCol
If Sheets(s2).Cells(s3Row, lCol) = "Y" Then
tempMass = Sheets(s2).Cells(3, lCol) 'Get Mass from row 3 above match
'Loop through Sheet 1 to find Mass to add to sum
For s1Row = 4 To lastRow1
If Sheets(s1).Cells(s1Row, "A") = tempMass Then
tempSum = Sheets(s1).Cells(s1Row, "B")
End If
Next s1Row
End If
Next lCol 'Advance through the columns
Sheets(s3).Cells(s3Row, "B") = tempSum 'Set sum on Sheet 3
Next s3Row 'Proceed to the next Mass on Sheet3
End Sub
答案 2 :(得分:0)
调整范围以适应:
=SUMPRODUCT(SUMIF(Sheet1!$A$2:$A$31,INDEX((INDEX(Sheet2!$D$4:$AG$33,MATCH(Sheet3!A2,Sheet2!$C$4:$C$33,0),0)="Y")*(Sheet2!$D$3:$AG$3)+1,)-1,Sheet1!$B$2:$B$31))