web-dev-qa-db-ja.com

塗りつぶされたセルのみを連結する

現在、カードゲームのスコアを追跡するためのスプレッドシートを用意しています。 2人から5人のプレイヤーがいる可能性があります。私は次のものを持っています:

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

現時点では私は使用します:

= JOIN( " vs " ; C10:C14 )

しかし、問題はDave vs Paul vs John vs vsになってしまうことです。

Dave vs Paul vs Johnと言う方法はありますが、より多くのプレーヤーがいる場合は、1つの式でDave vs Paul vs John vs Robを使用しますか?

19
Djave

はい、配列をFILTERingすることにより:

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

したがって、JOINメソッドは空でないセルでのみ動作します。

スプレッドシートの例 を設定しました。

また、 Google Spreadsheets関数リストFILTERを検索)を確認してください。

26
Vidar S. Ramdal

TEXTJOIN を試してください:

=textjoin(" vs ",1,C10:C14)
10
pnuts

テキストを含むセルが少なくとも1つある場合、上記の両方のソリューションが機能します。しかしながら:

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

C10:C14がすべて空の場合、%%%%を返します。

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

C10:C14がすべて空の場合、#N/Aを返します。

ただし、次のようにSUBSTITUTE関数で式をラップすることにより、%記号を空の文字列に置き換える最初のソリューションをわずかに修正できます。

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

(わかりやすくするために複数の行に表示)

私は別の解決策を見つけました:

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

%には、コンマ、アンパサンド、疑問符など、実際にはリストにない任意の記号を使用できます。

4
dan