使用 Excel 或 Open Office 剪切匹配字符串之前或之后的所有文本的最佳方法是什么?

使用 Excel 或 Open Office 剪切匹配字符串之前或之后的所有文本的最佳方法是什么?

我有一列不良数据需要标准化。这是一列,所以我只在这里包含其中的一个片段:

    pop_density_2010
    7002854600000000000854.6/sq mi (329.97/km2)
    70031416770000000001,416.77/sq mi (547.04/km2)
    70031051960000000001,051.96/sq mi (406.18/km2)
    70031822940000000001,822.94/sq mi (703.86/km2)
    70031297510000000001,297.51/sq mi (500.99/km2)
    70031285070000000001,285.07/sq mi (496.19/km2)
    70032087500000000002,087.5/sq mi (806.02/km2)
    7002133720000099999133.73/sq mi (51.64/km2)
    7002301560000000000301.56/sq mi (116.44/km2)
    70031003620000000001,003.62/sq mi (387.51/km2)
    7002593900000000000593.9/sq mi (229.31/km2)
    7002679689999900000679.68/sq mi (262.44/km2)
    7002368120000000000368.12/sq mi (142.14/km2)
    70031072369999999991,072.37/sq mi (414.06/km2)
    70031343750000000001,343.75/sq mi (518.84/km2)
    7002303640000000000303.64/sq mi (117.24/km2)
    70031465180000000001,465.18/sq mi (565.73/km2)
    7002987180000000000987.18/sq mi (381.17/km2)
    7002266330000099999266.33/sq mi (102.83/km2)
    7002235830000000000235.83/sq mi (91.06/km2)
    7002234160000000000234.16/sq mi (90.41/km2)
    7002208440000000000208.44/sq mi (80.48/km2)
    7002204020000000000204.02/sq mi (78.78/km2)
    7002808690000000000808.69/sq mi (312.25/km2)
    7002325910000000000325.91/sq mi (125.84/km2)
    7002697710000000000697.71/sq mi (269.4/km2)
    7002544740000000000544.74/sq mi (210.33/km2)

在 ruby​​ 中,我的冲动是做这样的事情,假设列转置为一个数组:

array.map{|x| x.split("sq mi (")[1].split("/km2")[0]}
#=> 329.97, 547.92, 406.18, ...

这样我就完成了。但是我现在不在编程环境中,所以现在不太方便。

我希望能够使用 Open Office 或 Excel 做同样的事情,并且不想拿出 VB 来做这件事,因为我不懂 VB。

如果您能在代码中看到它的作用,那就是将给定单元格的字符串划分为一个字符串片段数组,这些字符串片段通过与“sq mi(”字符串的匹配进行拆分,抓取其中的后半部分,然后对“/km2”字符串执行相同的操作,只是反向操作并抓取第一部分。然后我得到了一个很好的简单数字,我可以将其转换为英里或其他数字。谢谢。

答案1

以下公式将从存储在的字符串中提取“km2”数字A1

=VALUE(LEFT(RIGHT(A1, LEN(A1)-FIND("sq mi (", A1)-6), FIND("/km2", RIGHT(A1, LEN(A1)-FIND("sq mi", A1)-6))-1))

它与您的程序非常相似。首先,它会截断 之前的所有内容sq mi (,然后截断 之后的所有内容(包括 )/km2。整个公式包装在一个VALUE函数中,以便从文本转换为数字。

答案2

你可以使用 Excel 用户方式,而不是程序员方式 :-) 因此,你可以使用菜单数据然后文本分列命令,使用分隔符选项。您需要执行两次:

  1. 将命令应用到第一列并用作(分隔符——您将收到填充###.##/km2值的下一列;
  2. 将命令应用到刚刚出现的列并用作/分隔符——此列将被清除/km2,并移动到下一列(第三列)。

相关内容