将动态范围的数据格式化为文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将动态范围的数据格式化为文本相关的知识,希望对你有一定的参考价值。

我正在尝试将数字字符串转换为9位数字的文本。每次运行时,该列的长度都会有所不同。

尝试使用类似的方法来查找LastRow。

Sub Macro3()
'
Dim LastRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Data Validation")

Sheets("Data Validation").Select

Cells.Replace What:="-", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

LastRow = ws.Cells.find(What:="*", After:=ws.Cells(1, 1), 
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, 
MatchCase:=False).Row

Set rng = Cells(LastRow, 15)

Range("O2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-4],""000000000"")"
Range("O2").Select
Selection.AutoFill Destination:=Range("O2:rng")


End Sub

我希望我的文本格式可以扩展到现有数字的整列。当前,我正在获取对象_Global的方法范围失败错误消息。

答案

不需要SelectAutoFill

更改以下内容:

Set rng = Cells(LastRow, 15)

Range("O2").Select
ActiveCell.FormulaR1C1 = "=TEXT(RC[-4],""000000000"")"
Range("O2").Select
Selection.AutoFill Destination:=Range("O2:rng")

ws.Range("O2:O" & LastRow).FormulaR1C1 = "=TEXT(RC[-4],""000000000"")"

我个人倾向于避免FormulaR1C1

ws.Range("O2:O" & LastRow).Formula = "=TEXT(K2,""000000000"")"

以上是关于将动态范围的数据格式化为文本的主要内容,如果未能解决你的问题,请参考以下文章

如何通过添加零将文本数据格式化为 6 个字符?

导出到 Excel 时将所有数据格式化为文本(非通用)

将 TextField 文本格式化为价格

如何将 JSON 数据格式化为动态生成对象属性的 C# 对象

将文本格式化为数字的 SQLplus 脚本

如何将文本重新格式化为不同的模式?