Ekstrak data dan hitung

0

Saya memiliki sekitar 900 baris dalam excel dan perlu mengurai dan menghitung informasi spesifik dari setiap baris ke baris lain.

Contoh baris adalah:

Sistem xyz memiliki 4 x 10TB data yang ditugaskan untuk klien.

Saya harus dapat menemukan 4 x 10TB dan menghitungnya menjadi 40TB dalam kolom terpisah. Namun, beberapa orang mencatatnya sebagai 4x10TB atau 4 x 10 TB atau 4 x 10TB. Beberapa data hanya GB.

Apakah ada rumus yang digunakan untuk setidaknya mengekstrak penyimpanan?

pengguna325212
sumber
Dengan excel solusi akan menjadi regex .. Tidak mudah untuk berurusan dengan mereka dan untuk mengimplementasikannya .. Tautan ini dapat membantu Anda: stackoverflow.com/questions/9744602/…
Tofandel
Maaf, saya mungkin salah paham ... Apa maksud Anda "data berasal dari bidang catatan?" Saya pikir Anda maksud itu dalam komentar, tapi mungkin Anda hanya bermaksud itu bentuk bebas, dan dengan demikian sulit untuk dicocokkan?
Madball73
Maaf, maksud saya adalah bidang catatan dari database. Tidak ada yang memasukkan ukuran di kolom terpisah. Dalam excel, ekstrak contoh saya ada di satu kolom.
user325212

Jawaban:

0

Saya mungkin akan menambahkan 4 kolom, untuk mempermudah pemecahan masalah dan melakukan matematika / konversi nanti.

  1. String untuk mengurai
  2. Menghitung
  3. Ukuran
  4. 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.

Madball73
sumber