拉取数据问题

Pulling data issue

提问人:kpi 提问时间:11/9/2023 最后编辑:Mayukh Bhattacharyakpi 更新时间:11/9/2023 访问量:71

问:

该公式适用于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
VBA Excel-公式

评论

1赞 Ike 11/9/2023
尝试.Formula2 --> ws.Range("B12").Formula2 = formula
0赞 kpi 11/9/2023
U 的意思是说,而不是“ws.范围(“B12”)。公式=公式“,它应该按照你的建议是”ws。范围(“B12”)。公式 2 = 公式”
0赞 Ike 11/9/2023
是 - 因为您正在使用新的数组公式
0赞 kpi 11/9/2023
我尝试按照 u 所说使用,但我没有得到值,而是在 B12 中使用公式时像往常一样显示结果。
0赞 Ike 11/9/2023
我已经发布了答案

答:

2赞 Ike 11/9/2023 #1

您必须使用,因为公式包含新的数组公式。Formula2

若要检索值,请使用以下代码:

With ws.Range("B12")
   .Formula2 = formula
   .SpillingToRange.value = .SpillingToRange.value
End With