如何在Excel中获取显示值而不是实际值?

我有一个单元格包含date前。 “05/11/09”目前显示为“11-MAY-09”。 如何复制粘贴或使用VBA将string“11-MAY-09”放到旁边的单元格中(NOT“05/11/09”)?

除了自己拼凑date片段之外,我无法弄清楚。

使用格式function。

Format("5/11/2009", "DD-MMM-YY") 

这将返回:

 11-May-09 

如果情况很重要:

 UCase(Format("5/11/2009", "DD-MMM-YY")) 

收益:

 11-MAY-09 
 Range("B1").Value = Range("A1").Text 

使用单元格的.text而不是.value修饰符将复制文本格式而不是原始date。

我相信你可以使用TEXT函数来根据你的喜好设置一个date值的格式。

格式string“dd-mmm-yy”会将“05/11/09”格式设置为“11-MAY-09”。

尝试这个:

 Sub FormattedText() Dim r As Range On Error Resume Next Set r = Application.InputBox(prompt:="Select cell", Type:=8) If r.Count <> 1 Or r Is Nothing Then Exit Sub End If On Error GoTo 0 ActiveCell = "'" & r.Text End Sub 

它会将选定单元格(提示)的文本放入活动单元格中。

您应该能够右键单击单元格并将其设置为常规。 这将允许你放入一些东西,而不会被自动格式化为其他东西。

为了避免复制和粘贴,您还需要先input想要的date,然后再格式化,然后复制。

在VBA中,你可以这样做:

 Range("B2") = Range("A2") Range("B2").NumberFormat = "dd-mmm-yyyy hh:mm:ss" 'Date as 10-Jun-2005 

如果你需要循环它然后:

 Range("B" & i) = Range("A"& i) Range("B" & i).NumberFormat = "dd-mmm-yyyy hh:mm:ss" 'Date as 10-Jun-2005 

另一种方法来做到这一点。

低技术,但非常简单的方法 – 粘贴到Word中,然后复制到Excel! 可以用一个大文件,但是需要一段时间,但是,一次性使用伟大的工程!

“同样的答案,但具有不同的function(这对我有效):

 Public Function DisplayText(ByVal pRange As Range) As String DisplayText = pRange.Text End Function 

只需使用=DisplayText(A1) 。 如果您更改单元格格式,此function将返回显示的文本“

  • cc:alvaroc

如何获取MS Excel中的单元格的显示值(对于转换为date的文本)?