LibreOffice Calc: 如何将未格式化的文本转换为数字(或其他格式)

9
我该如何将未格式化的文本(例如csv或制表符分隔的文本)粘贴到LibreOffice Calc中,然后将其格式化为数字(而不是逐个单元格手动编辑)?当我粘贴以下文本时,它在每个字符前面加上一个',因此如果我尝试将其转换为数字,它仍然是文本。
Text 0.01% 3% 5.1%
Asdf 0.2% 4% 6.0%

例如,如果我将特殊粘贴选项选择为无格式文本并使用空格分隔符,然后将0.01%转换为数字(如果它实现我想要的效果,则会显示0.0001),那么它现在会在单元格中显示“0.01%”。

1
这个问题仍然存在于最新版本的LibreOffice中。这是一个非常难以解决的问题。有人知道如何提交错误报告吗? - EoghanM
3个回答

19

替换以单引号 ' (U+0027) 开头的单元格:

按下 CTRL+H » 点击更多选项 » 勾选正则表达式

搜索 ^.*$ 并替换为 &

这是一种 RegEx 引擎的技巧。它会查找单元格开始之前的所有内容,并用现有单元格内容替换 - 但不包括单引号。如果您想了解更多信息,请查看反向引用


非常有趣。我不知道你所说的“反向引用”是什么意思。你能解释一下它是如何工作的吗?它似乎不会干扰我在单元格中输入的“'”(这很好,因为我只想让它干扰自动生成的单元格)。 - CrazyCasta
正则表达式列表 https://help.libreoffice.org/Common/List_of_Regular_Expressions - m3asmi
3
我了解正则表达式,但不明白为什么那个正则表达式无法匹配单引号。我阅读了页面上的所有内容,但似乎没有解释单引号的特殊之处。例如,如果我将"s/^.*$/$0/g"输入到sed中,我期望得到与输入相同的结果。这并不影响你的解决方案非常好用,我只是想知道为什么它有效。 - CrazyCasta
1
@CrazyCasta 我认为前导单引号实际上不是单元格值的一部分。尝试简单搜索 ',您将不会得到任何匹配项。 - suriv
如果 Calc 已将它们导入为文本,则此操作仅用相同的文本替换文本,不会有任何变化。为使此操作生效,必须首先将单元格格式设置为数字 (Ctrl-Shift-1)。实际上,正则表达式是将单元格值替换为其自身,而不是删除引号。 - Marko Kohtala

12
该过程在LibreOffice 4.0.2中进行测试。将其作为未格式化的文本粘贴,并选择以下选项:
  • 选择英语作为语言,或者其他使用点作为小数分隔符的语言。
  • 选择“检测特殊数字”。
现在百分比将被粘贴为数字而不是文本,您可以使用格式选项将它们显示为您喜欢的方式。

太棒了,谢谢!一旦这个6小时的计时器结束,你就可以得到赏金了。真不敢相信我以前从没注意到这个:P - CrazyCasta
1
好的,但是如何在电子表格中已有数据上调用它呢?例如,我有一列以“$3.5 mill.”格式表示的数据,Libreoffice无法解释。我该如何让Calc再次检查数字? - AnjoMan

0

我使用函数CNUM()插入一列,并引用文本值。然后进行特殊复制粘贴:仅数字。最后抑制旧列。


你可能需要编辑后半部分,以使其在英语中更清晰。 - Izana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接