因此,我已经了解到,枢轴表是棘手的,字符串变量语法也是如此,在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"")"
发布于 2017-12-19 20:07:36
我一直使用Chr()函数来处理VB中的引号。双引号是Chr(34),单引号是Chr(39)。您所遇到的问题是,虽然jobnumber被定义为字符串,但它周围没有双引号。结果是Excel删除了公式11-008的前导零,Excel将其视为11减去8。添加双引号(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
https://stackoverflow.com/questions/47894130
复制相似问题