0

我有一个具有三种不同形式的纬度和经度坐标的单元格。单元格内的内容如下所示:

35°21′N 81°47′W / 35.35°N 81.79°W / 35.35;-81.79(埃伦伯勒(1 月 11 日,EF2))
38°46′N 85°28′W / 38.76°N 85.46°W / 38.76;-85.46(麦迪逊(1 月 17 日,EF0))
等。

我只想提取最后一组数字(35.35;-81.79)并将每个数字放在不同的行中,一个用于纬度,一个用于经度。

我该怎么做呢?

4

2 回答 2

3

如果您对使用公式感到满意- 这是我的解决方案(假设原始字符串放置在从 A2 开始的 A 列中):

  1. B2(纬度)=TRIM(MID($A2,SEARCH("@",SUBSTITUTE($A2,"/","@",2))+1,SEARCH("@",SUBSTITUTE($A2,";","@"))-SEARCH("@",SUBSTITUTE($A2,"/","@",2))-1)):。
  2. C2(经度)=TRIM(MID($A2,SEARCH("@",SUBSTITUTE($A2,";","@"))+1,SEARCH("@",SUBSTITUTE($A2,"(","@"))-SEARCH("@",SUBSTITUTE($A2,";","@"))-1)):。
  3. 根据需要自动填充两个公式。

这会将结果作为字符串返回。如果您希望它们作为数字- 只需将=VALUE(...)包装器添加到每个公式。但是,我的本地设置使用逗号作为小数分隔符,所以我必须再添加一个SUBSTITUTE来处理这个问题。

为方便起见,共享示例文件:https ://www.dropbox.com/s/twkcln8lozdgga9/CoordsSplit.xlsx

于 2013-01-23T17:55:45.153 回答
0

从替换开始:

\s+\(.*

由空字符串。然后替换:

^.*/\s+

由空字符串。然后,您将只剩下最后一组数字,然后很容易拆分它们(使用\s*;\s*)。

perl 中的演示:

$ perl -ne 's,\s+\(.*,,; s,^.*/\s+,,; my @coords = (split(/\s*;\s*/)); print "Latitude: $coords[0]; longitude: $coords[1]"' <<EOF
> 35°21′N 81°47′W / 35.35°N 81.79°W / 35.35; -81.79 (Ellenboro (Jan. 11, EF2))
> 38°46′N 85°28′W / 38.76°N 85.46°W / 38.76; -85.46 (Madison (Jan. 17, EF0))
> EOF
Latitude: 35.35; longitude: -81.79
Latitude: 38.76; longitude: -85.46
于 2013-01-23T17:13:03.023 回答