web-dev-qa-db-ja.com

分割、並べ替え、インライン連結

セルを分割し、ピースを並べ替えて再結合します。例えば:

| name        | reordered name |
| Page,Larry  | Larry Page     |
| Brin,Sergey | Sergey Brin    |

=SPLIT(A2, ",")は値を次の2つの列に分割し、=CONCATENATE(A2, " ", B2)で値を連結できることを知っています。

これらを単一の式にまとめるにはどうすればよいですか?

SPLITから値にアクセスして、並べ替えることはできますか?

=CONCATENATE(SPLIT(A2))を実行できることは知っています(しかし、明らかにそれは愚かです)。

Rubyでは、次のようにします。

def reorder_name(cell)
  names = cell.split(",")
  "#{names[1]} #{names[0]}"
end
5
Andrew Hubbs

次のカスタム関数を使用すると(JavaScriptでの記述に慣れているため)、それも可能です。

コード

function myReverse(range) {
  var output = [];
  if(range[0].length > 1) {
    throw ("function can only handle a column range");
  } else {
    for(var i in range) {
      var name = range[i][0].split(",");
      output.Push([name.reverse().join(" ")]);
    }
  }
  return output;
}

リマーク

範囲に複数の列が含まれる場合、小さなエラー処理によりメッセージがスローされます。範囲を受け入れるARRAYFORMULAと同様の関数。 [ツール]、[スクリプトエディター]の下にコードを追加します。スクリプトを保存すれば、準備完了です!!

次の式もトリックを行います。

=CONCATENATE(INDEX(SPLIT(A2, ","),1,2)," ",INDEX(SPLIT(A2, ","),1,1))

INDEX関数を使用すると、CONTINUEDの範囲から特定のセルを選択できます。この場合、2番目の分割結果、つまり,1,2が最初に表示されるようにします。つまり、分割結果の最初の行、2番目の列を意味します。

サンプルファイルを用意しました:split and reorder

5

これらのGSheet関数を使用して、文字列内の単語の順序を逆にします。

セルA1に書き込む="TRICK NO THIS IS"
およびセルB1 =JOIN(" ";TRANSPOSE(SORT(TRANSPOSE(SPLIT(A1;" "));1;FALSE)))

A1の入力からIS THIS NO TRICKを作成します。

内側から外側へ式を読む:

  • SPLITは、空白で区切られたA1内の単語を作成し、A1の単語の行(式が示されているように使用される場合は「仮想」)に配列します。
  • TRANSPOSEは、水平配列から垂直配列を作成します
  • SORTは垂直配列をソートします、1 =単一列、FALSEは順序を逆にします
  • TRANSPOSEは、並べ替えられた垂直配列から水平配列を再度作成します
  • JOINは、単語の水平配列を連結して、B1の間に空白を含む文字列にします。
2
Kerdaleos
=CONCATENATE(MID(A1,FIND(",",A1)+1,999), " ",LEFT(A1,FIND(",",A1)-1))

このスレッド の誰かがビットを取得する方法を投稿しました。私はそれらをconcatにラップしました。

コンマの後にスペースがある場合、またはスペースがない場合、+ 1,999部分の「+1」が調整になります。あなたのものにはスペースがないので、参照ページのように、スペースを2ではなく1に戻しました。

1
panhandel

Firstname lastnameを2つの列に分割し、コンマ区切り文字を追加して逆の順序にすることもできます。給与計算エントリの修正に非常に役立ちます。

            A               B            C
| firstname lastname  |  lastname  | firstname |
| JOHN BROWN          |  BROWN,    | JOHN      |
| MARTHA GREEN        |  GREEN,    | MARTHA    |

列B

=SPLIT(TRIM(MID($A1,FIND(" ",$A1,1)+1,100)) 
&", "& TRIM(LEFT($A1,FIND(" ",$A1,1)-1))," ",FALSE)
1
Jael Faulcon
name             reordered name
Page,Larry       Larry Page 
Brin, Sergey     Sergey Brin

式:

=index(split(A2, ","), 0, 2)&" "&index(split(A2, ","), 0, 1)
0
psima

正規表現でも可能です:

=regexreplace(A1,"[A-z]+,","")&" "&regexextract(A1,"\w*")
0
pnuts