如何使用VBA在Excel中的所有行前面添加单引号
我有一个电子表格,其中包含日期的第一列,我希望文本保持为“May-21”,但形式为字符串。单元格值应该是May-21,但当我尝试将其转换为字符串时,它使用5位数字。如果我将列保留为日期格式,它将自动选择May first,因此即使格式为MMM yy,值也将为5/1/2021,我想将列视为字符串而不是日期。有什么建议吗 以下是我在VBA中尝试的内容:如何使用VBA在Excel中的所有行前面添加单引号,excel,vba,Excel,Vba,我有一个电子表格,其中包含日期的第一列,我希望文本保持为“May-21”,但形式为字符串。单元格值应该是May-21,但当我尝试将其转换为字符串时,它使用5位数字。如果我将列保留为日期格式,它将自动选择May first,因此即使格式为MMM yy,值也将为5/1/2021,我想将列视为字符串而不是日期。有什么建议吗 以下是我在VBA中尝试的内容: Columns("A:A").Select Selection.NumberFormat = "'[$
Columns("A:A").Select
Selection.NumberFormat = "'[$-en-US]mmm-yy;@"
这就是你想要的吗 下面的方法使用
INDEX()
和TEXT()
公式一次性转换整个范围。没有循环。要了解更多解释,您可能需要查看
在行动中
注意:如果不想使用VBA,请使用公式
=TEXT(A1,“[$-en-US]mmm-yy;@”)
。把它放在B1单元格,然后向下拖动。最后复制粘贴为值。创建一个包含月份名称和数字的表,并从月份创建vlookup
Concat
month和year
的最后两个数字,您应该在不使用VBA的情况下就可以到达那里<代码>=vlookup(月([date]),表,2,0)&“-”和右(年([date]),2)我可以更改格式,但在格式设置之后,如果您在顶部的值字段中看到它,它仍然会显示日期以及日期、月份和日期。这不适合我。它显示了我的'May-21
,上面用截图更新了我的帖子,显示了公式栏。您可能需要刷新页面才能看到它。
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
Dim rng As Range
Dim sAddr As String
'~~> Change this to the relevant sheet
Set ws = Sheet1
With ws
'~~> Find last row in Col A in input sheet
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
Set rng = .Range("A1:A" & lRow)
sAddr = rng.Address
rng = Evaluate("INDEX(TEXT(" & sAddr & ",""'[$-en-US]mmm-yy;@""),)")
End With
End Sub