Saya mungkin akan menambahkan 4 kolom, untuk mempermudah pemecahan masalah dan melakukan matematika / konversi nanti.
- String untuk mengurai
- Menghitung
- Ukuran
- Unit Ukur (TB atau GB)
The "String untuk mengurai" adalah bagian yang relevan dari catatan bahwa kita perlu menghitung dari. Ekspresi reguler dapat membantu Anda di sini.
Tambahkan fungsi yang ditentukan pengguna untuk ekspresi reguler seperti yang tercantum di sini:
https://stackoverflow.com/questions/9744602/how-do-you-execute-a-regular-expression-in-excel
Saya pikir regex yang Anda inginkan adalah:
"[0-9 x]*[GT]B"
yang akan kembali sebagai berikut mengingat string ini (setelah melucuti semua spasi):
BOB HAS 400 x 10 gB --> "400x10gB"
4x10TB IN THE building xx --> "4x10TB"
I have 20TB of space --> "20TB"
Jadi, untuk mendapatkan "String to parse" ini , katakanlah Anda meletakkan ini dalam B2 dengan sel target A2:
=SUBSTITUTE(udfRegEx(A2,"[0-9 x]*[GT]B")," ","")
Hitungan dapat diekstraksi dengan (perhatikan ini mengisi ini sebagai 1, ketika tidak ada banyak yang diberikan):
=IF(ISERROR(FIND("x",B2)),1,VALUE(LEFT(B2,FIND("x",B2)-1)))
Ukuran dapat diekstraksi dengan:
=IF(ISERROR(FIND("x",B2)),VALUE(LEFT(B2,LEN(B2)-2)),VALUE(MID(B2,FIND("x",B2)+1,LEN(B2)-2-FIND("x",B2))))
Unit Ukur (TB atau GB) dengan:
=UPPER(RIGHT(B2,2))
Jumlah dan Ukuran keduanya dikembalikan sebagai angka, jadi Anda harus dapat mengalikan dan menambahkan dari sana ...
Catatan, fungsi VBA tunggal bisa melakukan semua ini dan menyembunyikan banyak kerumitan, tapi saya pikir yang terbaik adalah membiarkan fungsi VBA generik mungkin, dan melakukan sisanya di excel jika masuk akal.