Menggabungkan hanya sel yang terisi

21

Saat ini saya memiliki spreadsheet untuk melacak skor dalam permainan kartu. Bisa ada antara dua dan lima pemain. Saya memiliki yang berikut ini:

| Players  |
|----------|
| Dave     |
| Paul     |
| John     |
|          |
|          |

Saat ini saya menggunakan:

= JOIN( " vs " ; C10:C14 )

Tetapi masalahnya adalah saya kemudian berakhir dengan Dave vs Paul vs John vs vs.

Apakah ada cara untuk mengatakannya Dave vs Paul vs Johntetapi jika saya memiliki lebih banyak pemain, Dave vs Paul vs John vs Robdengan satu formula?

Djave
sumber

Jawaban:

26

Ya, dengan FILTERmemasukkan array:

= JOIN( " vs " ; FILTER(C10:C14; NOT(C10:C14 = "") ))

Dengan demikian, JOINmetode ini hanya akan beroperasi pada sel yang tidak kosong.

Saya telah menyiapkan contoh lembar bentang .

Juga, periksa daftar fungsi Google Spreadsheets (cari FILTER).

Vidar S. Ramdal
sumber
16

Coba TEXTJOIN :

=textjoin(" vs ",1,C10:C14)
kacang
sumber
2
Ini jawaban terbaik. Ini lebih pendek, lebih sederhana dan memungkinkan Anda untuk mengabaikan nilai kosong.
Ricardo Amaral
1
Saya selalu membaca semuanya untuk mencari jawaban terbaik bukan hanya "jawaban yang berhasil" :)
Ricardo Amaral
5

Kedua solusi di atas berfungsi jika setidaknya ada satu sel yang berisi teks. Namun:

= JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0))

Akan kembali %%%%jika C10: C14 semuanya kosong dan.

= JOIN( " vs " ; FILTER(C10:C14; NOT(C10:C14 = "") ))

Akan kembali #N/Ajika C10: C14 semuanya kosong.

Namun, Anda dapat sedikit mengubah solusi pertama untuk mengganti %tanda - tanda dengan string kosong dengan membungkus rumus dengan SUBSTITUTEfungsi seperti ini:

=SUBSTITUTE(
   JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0)),    // text_to_search
   "%",                                            // search_for
   ""                                              // replace_with
 )

(Ditampilkan pada beberapa baris untuk kejelasan)

Kieran Macdonald-Hall
sumber
Harap perhatikan: "di atas" benar-benar tidak memiliki konteks dalam jawaban, karena jawaban dapat diurutkan dengan berbagai cara.
ale
4

Saya telah menemukan solusi lain:

=JOIN(" vs ",SPLIT(JOIN("%",C10:C14),"%",0))

% Dapat berupa simbol apa pun yang benar-benar tidak ada dalam daftar, seperti koma, atau tanda bintang, atau tanda tanya.

dan
sumber
Alternatif yang bagus !!
Jacob Jan Tuinstra