我有一个具有三种不同形式的纬度和经度坐标的单元格。单元格内的内容如下所示:
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)并将每个数字放在不同的行中,一个用于纬度,一个用于经度。
我该怎么做呢?
如果您对使用公式感到满意- 这是我的解决方案(假设原始字符串放置在从 A2 开始的 A 列中):
=TRIM(MID($A2,SEARCH("@",SUBSTITUTE($A2,"/","@",2))+1,SEARCH("@",SUBSTITUTE($A2,";","@"))-SEARCH("@",SUBSTITUTE($A2,"/","@",2))-1))
:。=TRIM(MID($A2,SEARCH("@",SUBSTITUTE($A2,";","@"))+1,SEARCH("@",SUBSTITUTE($A2,"(","@"))-SEARCH("@",SUBSTITUTE($A2,";","@"))-1))
:。这会将结果作为字符串返回。如果您希望它们作为数字- 只需将=VALUE(...)
包装器添加到每个公式。但是,我的本地设置使用逗号作为小数分隔符,所以我必须再添加一个SUBSTITUTE
来处理这个问题。
为方便起见,共享示例文件:https ://www.dropbox.com/s/twkcln8lozdgga9/CoordsSplit.xlsx
从替换开始:
\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