Saya memiliki spreadsheet nama pengguna.
Nama depan dan belakang berada di sel kolom yang sama A
.
Apakah ada rumus yang akan menggabungkan dua huruf pertama dari nama depan (kata pertama) dan dua huruf pertama dari nama belakang (kata kedua)?
Misalnya John Doe
, harus menjadi JoDo
.
Saya mencoba
=LEFT(A1)&MID(A1,IFERROR(FIND(" ",A1),LEN(A1))+1,IFERROR(FIND(" ",SUBSTITUTE(A1," ","",1)),LEN(A1))-IFERROR(FIND(" ",A1),LEN(A1)))
tapi ini memberi saya JoDoe
hasilnya.
Jawaban:
Iya; dengan asumsi setiap orang hanya memiliki Nama Depan dan Nama Belakang, dan ini selalu dipisahkan oleh spasi yang dapat Anda gunakan di bawah ini:
Saya hanya bisa mendasarkan jawaban ini pada asumsi-asumsi itu karena semua yang Anda berikan
Atau jika Anda ingin ruang masih disertakan:
sumber
FIND()
daripadaSEARCH()
;-)) Karena Anda mengasumsikan selalu ada pemisah ruang, rumus kedua Anda dapat disederhanakan menjadi=LEFT(A1,2)&MID(A1,SEARCH(" ",A1),3)
assuming each person only has a First and Last name
TRIM(LEFT(A1,2))
kalau-kalau nama depan mereka hanya memiliki satu huruf, tetapi mungkin cukup mudah untuk memeriksa kasus-kasus khusus secara manual juga.Dan untuk menyelesaikannya, inilah solusi yang akan mengembalikan dua karakter pertama dari nama depan, dan dua karakter pertama dari nama belakang, tetapi juga menyumbang nama tengah.
Terima kasih kepada @Kyle untuk bagian utama formula ini
sumber
~
bukan empat. Jika Anda khawatir bahwa Tilda dapat digunakan sebagai bagian dari nama (!) Atau, lebih mungkin, diketik secara tidak sengaja, cukup gunakan karakter yang tidak muncul di papan ketik apa pun. Saya lebih suka menggunakan§
.¶
adalah satu lagi yang bagus.Ini cara lain ...
=CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))
sumber
=CONCATENATE(LEFT(A1,2),LEFT(RIGHT(A1,(LEN(A1)-FIND(" ",A1))),2))
Pertama, saya ingin mengatakan bahwa jawaban PeterH adalah yang paling sederhana dan termudah untuk dipahami. (Meskipun preferensi saya adalah menggunakan
FIND()
daripadaSEARCH()
- mengetik dua karakter kurang membantu menghindari RSI ;-))Jawaban alternatif yang tidak menggunakan
MID()
,LEFT()
jugaRIGHT()
, melainkan menggunakanREPLACE()
untuk menghapus bagian yang tidak diinginkan dari nama adalah sebagai berikut:Penjelasan:
Bagian dalam
REPLACE(A1, FIND(" ",A1)+3, LEN(A1), "")
menghilangkan karakter dari karakter ketiga dari nama belakang dan seterusnya, sedangkan bagian luar menghapus karakter dari karakter ketiga dari nama pertama hingga dan termasuk spasi.REPLACE(inner_replace, 3, FIND(" ",A1)-2, "")
Tambahan 1:
Formula di atas juga dapat disesuaikan untuk memungkinkan satu nama tengah:
dengan mengganti
FIND(" ",A1)
denganIFERROR(FIND(" ",A1,FIND(" ",A1)+1), FIND(" ",A1))
.FIND(" ", A1, FIND(" ",A1)+1)
menemukan spasi kedua (dengan memulai pencarian spasi setelah spasi pertama) atau kesalahan sebaliknya. menemukan ruang pertama jika tidak ada ruang kedua.IFERROR(find_second_space, FIND(" ",A1))
Versi (bertele-tele) ini memungkinkan sejumlah nama tengah:
Dalam hal
FIND(" ",A1)
ini diganti denganFIND("§", SUBSTITUTE(A1," ","§",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))
.LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
menghitung jumlah spasi. mengganti ruang terakhir dengan . menemukan yang pertama yang sama dengan menemukan ruang terakhir.SUBSTITUTE(A1, " ", "§", count_of_spaces)
§
FIND("§", last_space_replaced_string)
§
(
§
Tentu saja, bisa diganti dengan karakter apa pun yang dijamin tidak ada dalam string nama lengkap. Alternatif yang lebih umum dan lebih aman adalah menggunakanCHAR(1)
.)Perhatikan bahwa, tentu saja, jawaban BruceWayne adalah solusi paling sederhana dan termudah untuk dipahami yang memungkinkan sejumlah nama tengah.Ya itu. Sampai saya memposting jawaban saya yang lain , yaitu ;-)Tambahan 2:
Semua solusi dapat disesuaikan untuk memenuhi kasus satu nama saja (jika ada persyaratan untuk hasil empat karakter) dengan membungkusnya dalam suatu
IFERROR()
fungsi seperti:=IFERROR(solution, alternate_formula)
Perhatikan bahwa di atas adalah rumus kasus umum, dan dimungkinkan untuk membuat modifikasi yang lebih efisien untuk solusi tertentu. Misalnya, jika persyaratan dalam hal satu nama adalah untuk menggabungkan dua huruf pertama dengan dua huruf terakhir, jawaban PeterH dapat lebih efisien diadaptasi dengan cara ini:
Untuk memungkinkan huruf tunggal nama depan atau inisial (dengan asumsi spasi atau titik tidak dapat diterima sebagai karakter kedua) berikut ini dapat digunakan dengan solusi apa pun:
=SUBSTITUTE(SUBSTITUTE(solution, " ", single_char), ".", single_char))
Perhatikan bahwa karakter tunggal dapat berupa hard-coded atau dihitung dari namanya. (Atau gunakan
""
untuk menghapus spasi atau titik.)Terakhir, jika Anda benar - benar harus memenuhi kasus di mana nama lengkap adalah satu karakter saja (!), Cukup bungkus formula hanya nama tunggal dengan yang lain
IFERROR()
. (Dengan asumsi, tentu saja, bahwa formula alternatif tidak menangani kasus khusus itu.)Tambahan 3:
Akhirnya, akhirnya (tidak, benar-benar * ;-)) untuk memenuhi beberapa ruang berturut-turut dan / atau memimpin / mengikuti, gunakan
TRIM(A1)
sebagai gantiA1
.* Saya akan meninggalkan kasing untuk satu huruf nama belakang, seperti T, sebagai latihan untuk pembaca.
sumber
Berdasarkan jawaban ini , inilah solusi elegan yang bekerja dengan sejumlah nama tengah:
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()
yaituA1
, denganTRIM(A1)
. Spasi terdepan dan beberapa spasi berurutan antar kata ditangani dengan benar hanya denganA1
.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:
Untuk memahami cara kerjanya, pertama lihat apa yang terjadi ketika
A1
tidak mengandung spasi (yaitu hanya berisi nama tunggal). SemuaIFERROR()
fungsi mengevaluasi argumen kedua mereka karenaFIND()
mengembalikan#VALUE!
kesalahan jika string pencarian tidak ditemukan dalam string target: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 karenaFIND(" ", SUBSTITUTE(A1," ","",1))
berusaha menemukan ruang lain setelah menghapus yang pertama, dan hanya satu: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: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 dariMID()
output:Penyederhanaan yang saya sebutkan di atas adalah untuk mengganti
LEFT(MID(…,…,…), 2)
denganMID(…,…,2)
:atau pada satu baris:
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.
sumber