2017-02-26 673 views
0

我試着轉換excel表中的數據,其中一些存儲在GB,MB,TB,KB中。我想一切都轉化爲GB公式將Excel,MB,GB,TB轉換爲Excel中的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))) 

我得到一個錯誤的參數太多

+1

你可以張貼一些示例數據和預期的結果以防萬一? – Slai

回答

2

使用此數組公式:

=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而不是Enter鍵進行確認。如果正確完成,那麼Excel將在公式周圍放置{}

enter image description here


如果字符串總是與大小結束,那麼你可以用這個正常的公式:

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

只是注意到它將毫克轉換爲千兆字節:] – Slai

+0

@Slai是的我修復了它。 –

1

的中頻MB失蹤:

=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。

1
=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是可選