2017-02-26 5 views
0

Excel、GB、MB、TB、KBのデータを変換しようとしています。配列ビーイングKG、MB、GB、TBをGBに変換する式

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

:私はここに

ギガバイト

にすべてを変換する式は私があまりにも多くの引数

+1

オプションであるあなたは、いくつかのサンプルデータおよび所望の結果を投稿することができます念のため? – Slai

答えて

2

使用この配列数式のエラーを取得

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

を使用していますCtrl + Shift + 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

メガバイトのための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であると仮定します。

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

関連する問題