【问题标题】:Remove single quote VBA function删除单引号 VBA 函数
【发布时间】:2013-12-18 23:56:30
【问题描述】:

为简化起见,我在 Excel 工作簿中有两张工作表。

如果我在 sheet1 的一个单元格中写入 =sheet2!R3C2,则该单元格会正确获取 sheet2 的单元格 R3C2 的值。 我想对 VBA 中的许多行进行概括,所以我的代码是:

row = XX a long 

temp = "=sheet2!R" & row - 1 & "C2"

Range("c" & row).Value = temp

但是当我使用这段代码时,cell(row,3) 的值是=sheet2!'RXXC2'

如何删除单引号??

【问题讨论】:

    标签: vba excel quote


    【解决方案1】:
    Range("C" & row).Formula = temp
    

    会在您的单元格中生成正确的公式。

    你应该考虑做的而不是循环是

    Range("A1").Formula = "=Sheet2!$B1"
    Range("A1").Resize(100, 1).Formula = Range("A1").Formula
    

    第一行在活动工作表的单元格 A1 中插入公式 =Sheet2!$B1$ 美元符号确保该列不会增加(同样适用于数字

    然后第二行将公式从 A1 向下复制 100 行,替换 B 之后的数字

    那么现在

    A1 =Sheet2!B1
    A2 =Sheet2!B2
    A3 =Sheet2!B3
    ... 
    

    此外,您还不清楚您实际上要做什么,因此请考虑另一种选择,即使用 Evaluate() 函数将公式的值保存到另一个范围内

    Range("c" & row).Value = Evaluate(temp)Range("C" & Row).Value = [temp]

    【讨论】:

    • 看起来好像发生了转置……变量“row”正在寻址Range("c" & row)部分中的“列”。此外,由于 OP 似乎使用 R1C1 寻址,我认为您需要 FormulaR1C1。
    • @Floris 抱歉,但我不明白您为什么认为发生了转置?我认为 OP 只是试图从其他工作表中引用相关单元格。
    • 啊……我在 R1C1 模式下看到了C…。对不起。实际上,我最初编写了一个像您这样的解决方案,但使用R[-1]C3 来指示如何在 R1C1 中执行“一行向上,第 3 列” - 但从未保存编辑,因为我认为这不是他在做什么。我需要更多的睡眠。
    【解决方案2】:

    尝试写Range("c" & row).FormulaR1C1=temp

    【讨论】:

      【解决方案3】:

      您要设置公式,而不是值:

      Range("c"&row).FormulaR1C1 = temp
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-22
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        • 2023-01-07
        • 2014-01-01
        • 2021-12-09
        相关资源
        最近更新 更多