我有一个具有几千种高度、不同格式的列,我想将其转换为英寸。
来自实际数据的示例:
5英尺2英寸
6英尺3英寸
6英尺3英寸
6 英尺 3 英寸
5*8
5.3
5’10”
5 71/2
我在想有没有办法把英尺放在一列,把英寸放在第二列,这样就能计算英寸了。用 LEFT 计算英尺似乎很容易,但我不确定如何可靠地将英寸放在另一列。
做到这一点的最好方法是什么?
答案1
这将是一个多步骤的解决方案,我会通过将其分解成几个部分来解决它。
我将使用您的分号分隔列表(来自评论),加上一个附加值:5ft 7 1/2"。
使用 SUBSTITUTE 尽可能标准化列表:
Col B: Replace "feet" with "ft" =SUBSTITUTE(A2,"feet","ft") Col C: Replace "'" with "ft" =SUBSTITUTE(B2,"'","ft") Col D: Replace "ft" and " ft" with " ft" =SUBSTITUTE(SUBSTITUTE(C2,"ft"," ft")," ft"," ft") Col E: Remove "inches" =SUBSTITUTE(D2,"inches","") Col F: Remove "in" =SUBSTITUTE(E2,"in","") Col G: Remove " =SUBSTITUTE(F2,CHAR(34),"") (CHAR(34) is the double quotes symbol, ") This can also be done with a long nested formula. I prefer simple.
使用 SEARCH 查找“ft”的位置;如果不存在,则写入“0”
Col H: =IFERROR(SEARCH(" ft",G2,1),0)
计算英尺数
Col I: =IFERROR(VALUE(LEFT(G2,H2-1)),0)
英寸比较难,因为它可能包含分数。
确定表示英寸的文本,并使用 TRIM 修剪前导空格。Col J: =IFERROR(MID(G2,H2+2,1000)),0) Col K: =TRIM(J2)
确定“英寸”文本中是否有分数。
如果有带分数,则整数和分数之间应有一个空格 (71/2 = 35.5; 7 1/2 = 7.5)
找出后面所有空格和“/”符号的位置。Col L: =IFERROR(SEARCH(" ",K2,1),0) Col M: =IFERROR(SEARCH("/",K2,L2+1),0)
查找英寸数或(如果有带分数)整数英寸数。
如果英寸文本 =“”,则英寸数为 0。
如果没有“/”符号,则假定该数字为十进制数。
如果有“/”符号,则整数是空格前的数字Col N: =IF(K2="",0,IF(M2=0,VALUE(K2),IFERROR(VALUE(LEFT(K2,L2-1)),0)))
如果有“/”符号,计算分子和分母。
如果没有分数,分母 = 1。Col O: Numerator =IFERROR(VALUE(IF(M2=0,0,MID(K2,L2+1,M2-L2-1))),0) Col P: Denominator =IFERROR(VALUE(IF(M2=0,1,MID(K2,M2+1,100))),1)
添加数字列表
Col Q: =I2*12+N2+O2/P2
答案2
您可以使用 MID 或 Right 来表示英寸,或者您可以将文本转换为列。此外,在分离数据后,您还可以使用公式转换,此公式可以转换所有类型的单位,请参阅帮助。