提问人:kpi 提问时间:11/9/2023 最后编辑:Mayukh Bhattacharyakpi 更新时间:11/9/2023 访问量:71
拉取数据问题
Pulling data issue
问:
该公式适用于B12
=LET(nn,LET(sortedData,SORTBY(INDIRECT(B1&"!A5:R10998"),
MATCH(INDIRECT(B1&"!J5:J10998"),Master!C2:C10,0),1,
MATCH(INDIRECT(B1&"!A5:A10998"),Master!B1:B13,0),1),
FILTER(sortedData,INDEX(sortedData,0,9)="ABC ROSE","")),IF(nn=0,"",nn))
在B1中,这是一个下拉列表,它是可以选择的工作表名称,上面的公式工作得很好。
在这里,我想添加一个条件,如果列 M12 及以下和 S12 及以下,如果它为空,则必须存在零,其余如上公式所示。
所有这些都是我通过VBA需要的,因此我可以获得价值而不是公式的结果。
尝试了以下代码。但我没有得到结果。
Sub ApplyFormula()
Dim ws As Worksheet
Dim formula As String
' Set the worksheet to "CS"
Set ws = ThisWorkbook.Worksheets("CS")
' Check if columns M12 and S12 and below are blank
If Application.WorksheetFunction.CountA(ws.Range("M12:M" & ws.Cells(Rows.Count, "M").End(xlUp).Row)) = 0 And _
Application.WorksheetFunction.CountA(ws.Range("S12:S" & ws.Cells(Rows.Count, "S").End(xlUp).Row)) = 0 Then
' Insert zero in B12
ws.Range("B12").Value = 0
Else
' Apply the formula in B12
formula="=LET(nn,LET(sortedData,SORTBY(INDIRECT(B1&""!A5:R10998""),MATCH(INDIRECT(B1&""!J5:J10998""),Master!C2:C10,0),1,MATCH(INDIRECT(B1&""!A5:A10998""),Master!B1:B13,0),1),FILTER(sortedData,INDEX(sortedData,0,9)=""ABC ROSE"","""")),IF(nn=0,"""",nn))"
ws.Range("B12").Formula = formula
End If
End Sub
答:
2赞
Ike
11/9/2023
#1
您必须使用,因为公式包含新的数组公式。Formula2
若要检索值,请使用以下代码:
With ws.Range("B12")
.Formula2 = formula
.SpillingToRange.value = .SpillingToRange.value
End With
评论
.Formula2
-->ws.Range("B12").Formula2 = formula