Berdasarkan jawaban ini , inilah solusi elegan yang bekerja dengan sejumlah nama tengah:
=LEFT(A1,2)&LEFT(TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))),2)
Penjelasan:
SUBSTITUTE(A1, " ", REPT(" ",LEN(A1)))
mengganti spasi antar kata dengan spasi sama dengan jumlahnya dengan panjang keseluruhan string. Menggunakan panjang string daripada angka besar yang sewenang-wenang menjamin rumus ini berfungsi untuk string panjang apa pun dan berarti itu melakukannya secara efisien.
RIGHT(space_expanded_string, LEN(A1))
mengekstrak kata paling kanan yang diawali dengan banyak spasi. *
TRIM(space_prepended_rightmost_word)
mengekstrak kata paling kanan.
LEFT(rightmost_word, 2)
mengekstrak dua karakter pertama dari kata paling kanan (nama belakang).
* Peringatan: Jika memungkinkan bagi pengguna untuk memuat spasi tambahan, Anda perlu mengganti argumen pertama SUBSTITUTE()
yaitu A1
, dengan TRIM(A1)
. Spasi terdepan dan beberapa spasi berurutan antar kata ditangani dengan benar hanya dengan A1
.
Memperbaiki Usaha Anda
Melihat lebih dekat pada solusi yang Anda coba, sepertinya Anda sangat dekat dengan formula yang berfungsi untuk menggabungkan dua huruf pertama dari kata pertama (yaitu nama depan) dan dua huruf pertama dari kata kedua jika ada.
Perhatikan bahwa jika nama pengguna mengandung nama tengah, rumus yang diperbaiki akan salah mengambil dua huruf pertama dari nama tengah pertama alih-alih dari nama belakang (dengan asumsi niat Anda memang untuk mengekstraknya dari nama belakang).
Juga, jika semua nama pengguna hanya terdiri dari nama depan, atau nama depan dan nama belakang, maka rumusnya tidak perlu rumit dan dapat disederhanakan.
Untuk melihat bagaimana rumus itu bekerja dan memperbaikinya, lebih mudah jika rumusnya sudah dibuat, seperti:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
)
Untuk memahami cara kerjanya, pertama lihat apa yang terjadi ketika A1
tidak mengandung spasi (yaitu hanya berisi nama tunggal). Semua IFERROR()
fungsi mengevaluasi argumen kedua mereka karena FIND()
mengembalikan #VALUE!
kesalahan jika string pencarian tidak ditemukan dalam string target:
=
LEFT(A1,2) &
MID(
A1,
LEN(A1) + 1,
LEN(A1)
-LEN(A1)
)
Argumen ketiga MID()
mengevaluasi menjadi nol, sehingga fungsi menghasilkan ""
dan hasil rumus adalah dua karakter pertama dari nama tunggal.
Sekarang lihat ketika ada tepat dua nama (yaitu ada tepat satu spasi). Fungsi pertama dan ketiga IFERROR()
mengevaluasi argumen pertama mereka tetapi yang kedua mengevaluasi argumen kedua karena FIND(" ", SUBSTITUTE(A1," ","",1))
berusaha menemukan ruang lain setelah menghapus yang pertama, dan hanya satu:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
LEN(A1)
- FIND(" ",A1)
)
Jelas, MID()
mengembalikan kata kedua (yaitu nama belakang) secara keseluruhan, dan hasil rumus adalah dua karakter pertama dari nama depan diikuti oleh semua karakter dari nama belakang.
Demi kelengkapan, kami juga akan melihat kasus di mana setidaknya ada tiga nama, meskipun sekarang sudah cukup jelas bagaimana cara memperbaiki rumus. Kali ini, semua IFERROR()
fungsi mengevaluasi argumen pertama mereka:
=
LEFT(A1,2) &
MID(
A1,
FIND(" ",A1) + 1,
FIND(" ", SUBSTITUTE(A1," ","",1))
- FIND(" ",A1)
)
Ini sedikit kurang jelas daripada dalam kasus sebelumnya, tetapi MID()
mengembalikan persis seluruh kata kedua (yaitu nama tengah pertama). Dengan demikian, hasil rumus adalah dua karakter pertama dari nama depan diikuti oleh semua karakter dari nama tengah pertama.
Jelas, perbaikannya adalah LEFT()
untuk mendapatkan dua karakter pertama dari MID()
output:
=
LEFT(A1,2) &
LEFT(
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
IFERROR(
FIND(" ", SUBSTITUTE(A1," ","",1)),
LEN(A1)
)
- IFERROR(FIND(" ",A1), LEN(A1))
),
2
)
Penyederhanaan yang saya sebutkan di atas adalah untuk mengganti LEFT(MID(…,…,…), 2)
dengan MID(…,…,2)
:
=
LEFT(A1,2) &
MID(
A1,
IFERROR(FIND(" ",A1), LEN(A1)) + 1,
2
)
atau pada satu baris:
=LEFT(A1,2)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,2)
Ini pada dasarnya adalah solusi PeterH yang dimodifikasi untuk juga bekerja dengan nama tunggal (dalam hal ini, hasilnya hanya dua karakter pertama dari nama).
Catatan: Rumus yang sudah disiapkan sebenarnya berfungsi jika dimasukkan.