如何使用excel vba宏将变量值插入到getpivotdata公式中

问题描述 投票:3回答:2

所以我学习了数据透视表很棘手,字符串变量语法也是如此,在VBA中使用引号也是如此。我正在尝试(并且失败)使用这三个!

我正在尝试从一个非常大/复杂的数据透视表中收集一个数据来获取大量的工作号。我想在A1中选择一个作业号,并使用所选的作业号自动更新数据透视表公式以返回一个数字结果。

我目前遇到两个问题:1)获取'getpivotdata'公式的引号中的作业号的语法不起作用; 2)它在执行代码时从作业号中删除零。

我的代码列在下面,当我执行它时,我希望看到这个公式填充在A2中:

=GETPIVOTDATA("Part Number",' Parts Status '!$A$8,"CHAR_FIELD3","11-008","MATERIAL STATUS MASTER","Avail")

而是得到:

=GETPIVOTDATA("Part Number",' Parts Status '!$A$8,"CHAR_FIELD3",11-8,"MATERIAL STATUS MASTER","Avail")

我的代码在这里

Sub Macro1()

Dim jobnumber As String

jobnumber = Worksheets("Macros test").Cells(1, "A").Value

Sheets("Macros test").Select
    Range("A2").Select
    ActiveCell.FormulaR1C1 = _
        "=GETPIVOTDATA(""Part Number"",' Parts Status '!R8C1,""CHAR_FIELD3""," & jobnumber & ",""MATERIAL STATUS MASTER"",""Avail"")"
excel vba
2个回答
2
投票

如果您需要那里的引号,请将其更改为:

"=GETPIVOTDATA(""Part Number"",' Parts Status '!R8C1,""CHAR_FIELD3"",""" & jobnumber & """,""MATERIAL STATUS MASTER"",""Avail"")"

此外,您可以在设置jobnumber后添加临时msgbox,以确保它符合您的想法:

MsgBox(jobnumber)

1
投票

我总是使用Chr()函数来处理VB中的引号。双引号是Chr(34),单引号是Chr(39)。您遇到的问题是,虽然jobnumber被定义为字符串,但您没有双引号。结果是Excel删除了公式11-008上的前导零,Excel将其视为Eleven减去8。在jobnumber周围添加双引号(Chr(34))解决了这个问题。

我总是将这些长弦打成小块,这样我才能看到我输入的内容。下面的代码使用一个小的私有函数来构建您的枢轴字符串。

Public Sub PivotTest()

    Dim jobnumber As String

    jobnumber = Worksheets("Macros test").Cells(1, "A").Value

    Sheets("Macros test").Select
    Range("A2").Select
    ActiveCell.FormulaR1C1 = BuildPivotString(jobnumber)

End Sub

Private Function BuildPivotString(ByRef jobNum As Variant) As String
    Dim retVal As String

    retVal = "=GETPIVOTDATA("
    retVal = retVal & Chr(34) & "Part Number" & Chr(34)
    retVal = retVal & ",' Parts Status '!R8C1,"
    retVal = retVal & Chr(34) & "CHAR_FIELD3" & Chr(34) & ","
    retVal = retVal & Chr(34) & jobNum & Chr(34) & ","
    retVal = retVal & Chr(34) & "MATERIAL STATUS MASTER" & Chr(34) & ","
    retVal = retVal & Chr(34) & "Avail" & Chr(34) & ")"

    BuildPivotString = retVal
End Function
© www.soinside.com 2019 - 2024. All rights reserved.