【问题标题】:Extract specific data from a text in google spread sheet从谷歌电子表格中的文本中提取特定数据
【发布时间】:2016-06-15 14:14:21
【问题描述】:

我正在尝试从 Google 电子表格中的文本中提取一些特定数据,但我无法准确获取我想要的数据。

我要提取的文本如下:

"<strong>Title -</strong> Round and Round <strong><br><br>Artist -</strong> Laurie Lipton <strong><br><br>Type -</strong> Print <strong><br><br>Size -</strong> 18,3 x 23,5 in (46,5 x 59,7 cm) <strong><br><br>Medium - </strong> Lithograph <strong><br><br>Year -</strong> 2014 <strong><br><br>Condition -</strong> Excellent

我可以使用@soup 给我的公式,但即使在这种情况下,当有数字时它也不会完全提取数字。如果我有 13.5 x 14.35,我有一个单元格显示 13,另一个显示 5。

公式如下:

=arrayformula(value(regexextract(A68, "([\d.]+)\D*([\d.]+)")))

【问题讨论】:

  • 此文本是否已经在表单中,或者您是否使用 importxml/importdata 将其拉入?
  • 文本已经在工作表中。
  • 下面的答案是否完全解决了您的特定问题,或者您仍在寻求答案?
  • 抱歉现在回答,在某种程度上确实如此,我实际上想知道我是否可以在字符串中包含逗号和点,以便在提取数据时不必更改它?否则问题是,如果一个数字是 14.3 并且它下面的一行写为 13,5,我将不得不更改字符串以便提取数据。

标签: google-sheets


【解决方案1】:

在 Google 表格中,regexextract 做得很好:

=regexextract(Q2, "([\d.]+)\D*([\d.]+)")

在两个单独的单元格中返回“40”和“30”。

但是这些都是作为字符串返回的,所以您可能希望使用value 将它们转换为数字:

=arrayformula(value(regexextract(Q2, "([\d.]+)\D*([\d.]+)")))

说明

字符串“([\d.]+)\D*([\d.]+)”是一个regular expression,这意味着:找到一组连续的数字\d,可能带有小数点,并且捕获它(用括号表示);然后滚动任意数量的非数字\D*,然后找到另一组数字并捕获它。上面链接了一个关于正则表达式的教程; Google 表格支持的功能的技术描述是here

【讨论】:

  • 为答案添加了解释。
  • 它在这里工作得很好,但是我对另一个包含每个数字的数字的字符串有问题,它不包括那些但把它们放在下一个单元格中。你知道怎么解决吗?非常感谢您的帮助。
  • 好的,我更改了正则表达式,以便它允许在数字中使用小数点。因此,40.6 将在一个单元格中,30.25 将在另一个单元格中。
  • 我更改了文本以向您展示我遇到问题的地方,所有字符串实际上都在我拥有的文本中,所以如果有一行又一行,请不要考虑。再次感谢。
  • 所以它使用十进制逗号而不是小数点。好的,在正则表达式中用逗号替换两个点。
【解决方案2】:

如果有逗号和小数,这将解决逗号和小数 - 如果没有,它仍然将其视为相同:

=REGEXEXTRACT(A1,"(\d+.?\d*)\D*(\d+.?\d*)")

更新以包含分数:

=REGEXEXTRACT(A1,"(\d+.?\d*|\d+.?\d/\d)\D*(\d+.?\d*|\d+.?\d/\d)\D*(\d+.?\d*|\d+.?\d/\d\s?)?in")

【讨论】:

  • 谢谢 Aurelie,我想知道如果我有一个额外的 (\d*.?\d*),它是否只适用于双单元?它对我不起作用。以及我将公式更改为 =REGEXEXTRACT(A60,"(\d+.?\d+.?\d*)\D*(\d+.?\d+.?\d*)\D*(\d+ .?\d+.?\d*)") 因为我有时需要提取“/”,并且将其应用于常规的两个单元格不起作用。
  • 你能与/分享另一个案例的样本吗


  • 原产地 -英格兰

    尺寸 -34 x 36 1/2 x 22 英寸( 86.4 x 68.6 x 57.1 厘米)

    字体 -17 世纪下半叶
  • 嗨,Aurelie,你有没有发现什么东西?谢谢
  • @MarcBiessy 是的,抱歉工作一直很忙 - 我更新了公式以将变化添加到底部 - 它现在应该处理所有情况,无论是 2 维还是 3 维以及所有标点符号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多