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

在Excel中将单元格值引用为字符串,excel,format,cell,Excel,Format,Cell,在Excel中,如果单元格A1的某些值以特定方式格式化,那么单元格B1是否可以引用A1中显示的字符串 澄清: 例如,如果A1显示时间10:31:48,我希望B1引用显示给用户的这个输出字符串(“10:31:48”,而不是底层的数字表示“0.43875”) 我很清楚,有一些函数可以手动格式化值。然而,我要寻找的是从另一个单元格复制一个已经格式化的值,不管该单元格可能有什么格式 这样做可能吗?事实上,Excel将日期时间存储为数字,因此您必须显式设置单元格格式以查看正确的值 您可能希望使用TEX

在Excel中,如果单元格A1的某些值以特定方式格式化,那么单元格B1是否可以引用A1中显示的字符串

澄清:

  • 例如,如果A1显示时间10:31:48,我希望B1引用显示给用户的这个输出字符串(“10:31:48”,而不是底层的数字表示“0.43875”)
  • 我很清楚,有一些函数可以手动格式化值。然而,我要寻找的是从另一个单元格复制一个已经格式化的值,不管该单元格可能有什么格式

这样做可能吗?

事实上,Excel将
日期时间
存储为
数字
,因此您必须显式设置单元格格式以查看正确的值

您可能希望使用
TEXT
函数,但无论如何,您必须指定输出字符串的
格式

=TEXT(A1,"hh:mm:ss")
另一个选项是编写自己的VBA函数,该函数可以根据单元格的格式转换单元格的值:

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

这将根据源单元格的格式生成结果,因此由于VBA format函数与Excel格式不兼容,因此无法正常工作。 下表显示了上面的“GetString()”和“GetText()”之间的区别

短约会和长约会都很有趣——它们的休息时间为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'              '@'

Excel现在被认为是编程?对我来说,这听起来有些离题。你是说使用标准Excel-没有VBA?是的,我说的是标准Excel。我在这里看到了其他非VBA Excel问题,因此我认为在这里提问是公平的。作为初学者,您可以通过
=cell(“format”;A1)
获得有关格式的信息。如原始问题中所述,是的,我知道它存储为一个数字。但是,我的问题是,是否可以从另一个单元格访问预格式化的值,无论是时间、货币、日期、分数、科学符号,ISBN数字或任何格式。根据评论,他寻找非VBA答案。@Howard有时更容易使用一些编程来解决问题:)应该是=文本(A1;“hh:mm:ss”)-(分号代替逗号)
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'              '@'