如何在一系列单元格中获取数值并将其转换为文本值

时间:2015-01-13 12:47:30

标签: excel

考虑:Paste special会让你通过粘贴另一个值为1的单元格并使用值和乘法选项将范围中的文本转换为数字,但是如果我想反过来会怎样。

即。将值存储为123并将其存储为文本值'123

存储的实际值不仅需要改变它的显示方式。

我正在处理电话号码,并发现需要将两个带有数字的列表合并到一个列表中,以便查找目的需要按文本顺序存储。

所以我的区号看起来像这样(数字存储为文本)

ColumnA   ColumnB 
0113   Leeds
0113   Leeds
0114   Sheffield
0114   Sheffield
0115   Nottingham
0116   Leicester

我的国际拨号代码列表如下(数字存储为数字)

7   Turkmenistan
20   Egypt
27   South Africa
30   Greece
31   Netherlands (Holland)
32   Belgium
33   France

当我在第一个列表的末尾粘贴第二个列表然后将列表排序为一个列表时,第二个列表中的数字全部放在顶部,因为第二个列表全部是数字。

如果我想将第二个列表更改为文本值,该怎么办?救命啊!

请注意,如果我将第一个列表文本值单元格更改为数字,我将松开“0”作为第一个字符。所以我需要所有文字。

PS。如果有人知道的话,代码解决方案以及如何使用Excel GUI都会很好。

PPS。以上描述仅是问题的代表性示例,在处理电话号码和数据数据的导出和导入时问题再次发生。 Excel似乎喜欢出于某种原因将数字转换为文本值。)

哈维

2 个答案:

答案 0 :(得分:2)

我建议将第二个表格转换为文本值。将第一个表格更改为数字并使用自定义数字格式 0000 将数字显示为带有前导零的4位数字。

  1. 将整列设置为常规格式。
  2. 使用数据►数据工具►文本到列。第一个屏幕选择固定宽度然后单击完成
  3. 列应该是 General 格式的右对齐数字。选择列中的所有数字,然后点击 Ctrl + 1 。打开“格式化单元格”对话框后,转到 Numbers 选项卡,然后从左侧列表中选择自定义。将 0000 用于类型:,然后点击右下方的确定
  4. 当你完成后,你应该有一整列数字显示为带有前导零的四位数(如有必要)。排序应该没问题。

答案 1 :(得分:0)

我已经写过这个VBA,我认为这是一个"终极"回答我的问题。

Public Function ConvertValueToHaveTextDataType(Avalue As Variant) As String

    ConvertValueToHaveTextDataType = CStr(Avalue)

End Function

PS。有关更全面的解释,请参阅SO 28000600 here