【问题标题】:Text Function for multiple cells多个单元格的文本函数
【发布时间】:2015-07-27 12:15:16
【问题描述】:

我想知道是否有替代方法(不是循环)在多个单元格上使用文本函数。

例如,下面的代码可以正常查找

Range("c2:c6").Value = Application.WorksheetFunction.VLookup(Range("a2:a6"), Range("a2:b6"), 2, 0)

但是我收到以下文本函数的错误

Range("c2:c6").Value = Application.WorksheetFunction.Text(Range("A2:A6"), "000000")

【问题讨论】:

  • 您能分享一下您遇到的错误吗?因为一个错误可能有很多东西。
  • 你得到什么错误?是否要插入数组公式?因为 Excel 函数 TEXT 不接受范围作为第一个参数(除非它是数组公式)。
  • 运行时错误'13'类型不匹配
  • 您可以在此处阅读更多 about.worksheetfunction.text:msdn.microsoft.com/en-us/library/office/ff841121.aspx

标签: vba excel


【解决方案1】:

您只想格式化单元格并复制值吗?

像下面这样?

    With Range("C2:C6")
        .Value = Range("A2:A6").Value
        .NumberFormat = "000000"
    End With

宏记录器给了我与上面类似的一些优化

使用公式

Range("C2").FormulaR1C1 = "=TEXT(RC[-2],""000000"")"
Range("C3").FormulaR1C1 = "=TEXT(RC[-2],""000000"")"
Range("C4").FormulaR1C1 = "=TEXT(RC[-2],""000000"")"
Range("C5").FormulaR1C1 = "=TEXT(RC[-2],""000000"")"
Range("C6").FormulaR1C1 = "=TEXT(RC[-2],""000000"")"

或者更动态的东西

For Each cell In Range("C2:C6")
    cell.FormulaR1C1 = "=TEXT(RC[-2],""000000"")"
Next

【讨论】:

  • 嗨,我目前使用公式,但如果可能的话,我的偏好是使用文本函数
  • 我已经修改了上面的代码。这三个中的最后一个可能是最好的一个,因为您可以轻松更改范围。如果您想更进一步,您可以计算出 A 中的最后一行,然后将其用于循环中的最后一个范围行号
【解决方案2】:

一行代码

Sub Sample()
    [C2:C6] = [INDEX("'" & TEXT(A2:A6,"000000"),)]
End Sub

如果您想对此进行解释,请参阅This

【讨论】:

  • 您好,感谢您的回答。注意到在你的答案和罗里的答案中,你们都放了一个撇号(尽管在稍微不同的地方)。如果撇号不存在,代码似乎会产生相同的结果。有没有添加它的原因?
  • 如果单元格没有格式化为文本并且您的数字很长,那么您必须添加' 否则您将看到以科学计数法显示的数字。 :) 例如,在单元格 A1 中的任何新的 Excel 工作表类型 100000000000 中。你看到了什么? 1E+11 现在试试 '100000000000
【解决方案3】:

如果你真的想避免循环,你可以使用Evaluate:

Range("c2:c6").Value = Range("c2:c6").Worksheet.Evaluate("INDEX(TEXT(A2:A6,""'000000""),)")

【讨论】:

  • ++啊!很久以后打败你:P
【解决方案4】:

或者:

Sub dural()
    Range("C1:C6").Formula = "=Text(A1,""000000"")"
End Sub

【讨论】:

  • 您好,我目前使用公式,但如果可能,我更喜欢使用文本函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2017-05-09
  • 2011-01-07
  • 1970-01-01
  • 2019-08-15
  • 2018-02-06
相关资源
最近更新 更多