我正在尝试使用VBA将单元格中的VLOOKUP作为字符串写入。这意味着我不希望结果作为值出现在单元格中,但我想要整个VLOOKUP表达式(对于此示例:"VLOOKUP(C6,'[path_to_file.xlsm]OTD Table!$B:$F,4,0)")
。挑战是VLOOKUP的范围参数是串联用户使用GetOpenFilename选择的路径(path_to_file.xlsm)
,以及指定查找表所在的选项卡的字符串("OTD Table!$B:$F,4,0").
我得到的问题非常有趣:
当我在Msgbox中打印表达式时,表达式会正确显示。但是,当我在单元格中写入时,路径神秘地显示不正确。
Sub macro()
dim data_file_new as String
data_file_new = CStr(Application.GetOpenFilename(FileFilter:="Excel Workbooks (*.xls*),*.xls*", Title:="Select new data file")) ' The user selects the file
str_ = "=VLOOKUP(C6," & "'[" & data_file_new & "]OTD Table!$B:$F,4,0)" ' This will display the expression correctly
cells(1,10)="=VLOOKUP(C6," & "'[" & data_file_new & "]OTD Table!$B:$F,4,0)"' This will not display the same thing as in the messagebox above
end Sub
我希望你们其中一个人能够理解这一点!
答案 0 :(得分:1)
因为您要将公式放入要显示为直文的单元格中,所以必须使用Excel显式并标记文本字符串以防止将其解释为公式。最简单的方法是使用单引号“'”预先挂起字符串。
Sub macro()
Dim data_file_new, str_ As String
str_ = "'=VLOOKUP(C6,'["
data_file_new = CStr(Application.GetOpenFilename(FileFilter:="Excel Workbooks (*.xls*),*.xls*", Title:="Select new data file")) ' The user selects the file
str_ = str_ & data_file_new & "]OTD Table!$B:$F,4,0)" ' This will display the expression correctly
ActiveSheet.Cells(1, 10).Value = str_
End Sub
答案 1 :(得分:0)
是的,您需要设置字符串以添加单引号,或者您需要将单元格的数字格式更改为文本(Cells(1,10).NumberFormat =“@”)
其中任何一个都应该有用。