公式在Excel中将KG,MB,GB,TB转换为GB

我尝试转换Excel表格中的数据,一些是GB,MB,TB,KB。 我想把所有东西都转换成GB

这里是我使用的公式

=IF(ISERROR(FIND("GB",H2))=FALSE,VALUE(LEFT(H2,FIND("GB",H2)-1)*1),IF(ISERROR(FIND("TB",H2))=FALSE,VALUE(LEFT(H2,FIND("TB",H2)-1)*1024),VALUE(LEFT(H2,FIND("MB",H2)-1)/1024),VALUE(LEFT(H2,FIND("KB",H2)-1)/1048576))) 

我得到一个错误太多的论据

使用这个数组公式:

 =LEFT(A1,MIN(IFERROR(FIND({"KB","MB","GB","TB"},A1),1E+99))-1)/INDEX({1048576,1024,1,0.0009765625},MATCH(RIGHT(A1,2),{"KB","MB","GB","TB"},0)) & "GB" 

作为一个数组公式,需要用Ctrl-Shift-Enter来确认,而不是input。 如果做得正确的话,excel会把{}放在公式的周围。

在这里输入图像说明


如果你的string总是以大小结尾,那么你可以使用这个正常的公式:

 =LEFT(A1,LEN(A1)-2)/INDEX({1048576,1024,1,0.0009765625},MATCH(RIGHT(A1,2),{"KB","MB","GB","TB"},0)) & "GB" 

MB的IF如下:

 =IF(ISERROR(FIND("GB",I2))=FALSE,VALUE(LEFT(I2,FIND("GB",I2)-1)*1),IF(ISERROR(FIND("TB",I2))=FALSE,VALUE(LEFT(I2,FIND("TB",I2)-1)*1024),IF(ISERROR(FIND("MB",I2))=FALSE,VALUE(LEFT(I2,FIND("MB",I2)-1)/1024),VALUE(LEFT(I2,FIND("KB",I2)-1)/1048576)))) 

不是我鼓励这种方式,因为它是如此的愚蠢,但那是错的。 另外,它假设最后一个值是KB。

 =ROUND( LEFT(H2,FIND("B",H2)-2) *1024^(FIND(MID(H2,FIND("B",H2)-1,1),"KMGTPEZY")-3) ,2)&"GB" 

LEFT部分是以前得到的数字?B*1024^部分是根据B之前的字母转换成GB, ROUND是可选的