移除输出中间的双空格 所以我在Excel中使用了一些VBA的API,从程序中得到的输出在123456个7891011的数字中间放了一个双倍的空间。我目前的解决办法是 With ws.Range("J2:J98") .Formula = "=LEFT(I2,6)" End With With ws.Range("K2:K98") .Formula = "=RIGHT(I2,7)" End With With ws.Range("L2:L98") .Formula = "=CONCATENATE(J2,K2)" .Value = .Value .NumberFormat = "0" End With

移除输出中间的双空格 所以我在Excel中使用了一些VBA的API,从程序中得到的输出在123456个7891011的数字中间放了一个双倍的空间。我目前的解决办法是 With ws.Range("J2:J98") .Formula = "=LEFT(I2,6)" End With With ws.Range("K2:K98") .Formula = "=RIGHT(I2,7)" End With With ws.Range("L2:L98") .Formula = "=CONCATENATE(J2,K2)" .Value = .Value .NumberFormat = "0" End With,vba,excel,Vba,Excel,隐藏J和K 我的问题是:有没有一种不使用单元格来保存公式的方法 下面是我用来提取我想要修改的内容的代码 ActiveSheet.Cells(k, 9) = Trim(autECLSession.autECLPS.GetText(4, 24, 15)) 解决办法是 With ws.Range("L2:L98") .Formula = "=Substitute(I2,"" "", """")" .Value = .Value .NumberFormat = "0" End

隐藏J和K

我的问题是:有没有一种不使用单元格来保存公式的方法

下面是我用来提取我想要修改的内容的代码

ActiveSheet.Cells(k, 9) = Trim(autECLSession.autECLPS.GetText(4, 24, 15))
解决办法是

With ws.Range("L2:L98")
    .Formula = "=Substitute(I2,""  "", """")"
    .Value = .Value
    .NumberFormat = "0"
End With

对我的问题的一个修正是,我是否需要输出来命中单元格,或者我是否可以在替换之前运行它?

您可以做的一件事是使用替换,而不是使用左侧和右侧并连接它们:

=SUBSTITUTE(I2;"  ";"")
这将减少所需的hideen柱的数量


不确定您正试图做什么,但您可以使用选定/目标区域上的循环替换原始内容。然后不需要任何公式,原始范围将替换为新值。

只需将
.Formula=“=CONCATENATE(J2,K2)”
更改为
。Formula=“=CONCATENATE(LEFT(I2,6)、RIGHT(I2,7))”
或只需使用
。Formula=“=SUBSTITUTE(I2,”、“”)
所以,我使用了simoco给我的替代公式,这个公式有效,但我想我不明白你答案的第二部分。我是否能够将输出保存为Long,然后在其上运行替换?下面的Ron实现了我的建议。可以编写如下宏:
Activecell = Range("J2")
for x=1 to 97
   if instr(1, activecell, "  ") > 0 then   ' test do see if a double space is present in the activecell
      activecell = replace(activecell, "  ", "")   ' if so, remove it
   else
   end if
next x