在Excel中将单元格值引用为字符串

时间:2013-05-28 07:38:15

标签: excel format cell

在Excel中,如果单元格A1有一些以特定方式格式化的值,单元格B1是否有方法引用A1中显示的字符串?

澄清:

  • 如果A1显示,例如,时间10:31:48,我希望B1引用此输出字符串,如用户所示(“10:31:48”,而不是基础数字表示“0.43875”)
  • 我很清楚有手动格式化值的功能。但是,我正在寻找的是从另一个单元复制已经格式化的值,无论该单元格可能具有什么格式。

这样的事情可能吗?

2 个答案:

答案 0 :(得分:8)

实际上,Excel将datetime存储为number,因此您必须明确设置单元格的格式以查看正确的值。

您可能想要使用TEXT函数,但无论如何,您必须指定输出字符串的format

=TEXT(A1,"hh:mm:ss")

另一个选择是编写自己的VBA函数,它可以根据格式转换单元格的值:

Public Function GetString(ByVal cell As Range) As String
 GetString = Format(cell, cell.NumberFormat)
End Function

这将根据源单元格式

给出结果

答案 1 :(得分:0)

因此,由于VBA格式功能与Excel格式不兼容,因此无法正常工作。 下表显示了上面的“ GetString()”和“ GetText()”之间的区别

Public Function GetText(ByVal cell As Range) As String
 GetText = Application.WorksheetFunction.Text(cell, cell.NumberFormat)
End Function

短日期和长日期很有趣-截止日期为1天。

Format      Value                       GetString                   GetText                    GetFormat
general     3.141592638                 'Ge23eral'                  '3.141592638'              'General'
number      3.14                        '3.14'                      '3.14'                     '0.00'
Currency    $3.14                       '$3.14'                     '$3.14'                    '$#,##0.00'
Accounting  $3.14                       '_($3.14_)'                 ' $3.14 '                  '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)'
Short Date  1/3/1900                    '1/2/1900'                  '1/3/1900'                 'm/d/yyyy'
Long Date   Tuesday, January 3, 1900    'Tuesday, January 02, 1900' 'Tuesday, January 3, 1900' '[$-F800]dddd, mmmm dd, yyyy'
Time        3:23:54 AM                  '3:23:54 AM'                '3:23:54 AM'               '[$-F400]h:mm:ss AM/PM'
Percentage  314.16%                     '314.16%'                   '314.16%'                  '0.00%'
Fraction    3  2/16                     '3 ??/16'                   '3  2/16'                  '# ??/16'
Scientific  3.14E+00                    '3.14E+00'                  '3.14E+00'                 '0.00E+00'
Text        3.141592638                 '3.141592638'               '3.141592638'              '@'