gpt4 book ai didi

vba - excel vba公式构造双引号与单引号

转载 作者:行者123 更新时间:2023-12-04 20:00:10 25 4
gpt4 key购买 nike

我在标题“在 R1C1 公式构造中使用变量”下找到了答案,这使我的公式有效。有人可以解释一下如何构造公式并将其存储在单元格中的逻辑。

原来的:

=IF(ISNUMBER(SEARCH("IAV",RC[-2])),MID(RC[-2],FIND("IAV",RC[-2])+6,11),"")

在职的:
sFRM = "=IF(ISNUMBER(SEARCH('IAV',RC[-2])),MID(RC[-2],FIND('IAV',RC[-2])+6,11),'')"
.Range("o2:o" & lr).FormulaR1C1 = Replace(sFRM, Chr(39), Chr(34))

提前致谢

最佳答案

我认为您正在试图弄清楚为什么 VBA 版本中有单引号,而 excel 表中有双引号。

在 VBA 中,要创建字符串类型的变量,请将其放在引号内。
所以这一行:

myvar = "help"

使变量 myvar 成为一个字符串,其值为 help [不带引号]

但是如果你希望在你的字符串中有引号呢?所以你希望 myvar 实际上等于
John said "Help"

如果您尝试将变量设置为等于此值,VBA 会将引号视为退出字符串的符号,并会导致错误,例如以下行中发生的错误:
myvar = "John said "Help""

这是行不通的,因为 VBA 会看到第二个引号并认为字符串是完整的(并且等于 [John said ]),但它不知道下一个字符“H”告诉它要做什么。

有几种方法可以纠正这个问题,但您的代码通过使用单引号然后用双引号替换它们来实现。使用该方法的同一行是:
myvar = "John said 'Help'"
myvar = replace(myvar,chr(39), chr(34))

在这里,字符串最初包含所需的句子,但在单词 Help 周围带有单引号。

Chr(39) 代表单引号,Chr(34) 代表双引号。所以replace函数把所有的单引号都改成了双引号。

相反,您可以这样做:
myvar = "John said " & chr(34) & "Help" & chr(34)

它会创建相同的字符串。

您的代码使用单引号而不是双引号将变量 sFRM 设置为所需的值,然后用双引号替换单引号。代码行开头和结尾的双引号用于表示其中的字母将被放入字符串中。

单引号用作要替换的占位符。还有其他方法可以做到这一点,但您提供的方法将起作用。

关于vba - excel vba公式构造双引号与单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com