セルを分割し、ピースを並べ替えて再結合します。例えば:
| 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
次のカスタム関数を使用すると(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
これらの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の間に空白を含む文字列にします。=CONCATENATE(MID(A1,FIND(",",A1)+1,999), " ",LEFT(A1,FIND(",",A1)-1))
このスレッド の誰かがビットを取得する方法を投稿しました。私はそれらをconcatにラップしました。
コンマの後にスペースがある場合、またはスペースがない場合、+ 1,999部分の「+1」が調整になります。あなたのものにはスペースがないので、参照ページのように、スペースを2ではなく1に戻しました。
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)
name reordered name
Page,Larry Larry Page
Brin, Sergey Sergey Brin
式:
=index(split(A2, ","), 0, 2)&" "&index(split(A2, ","), 0, 1)
正規表現でも可能です:
=regexreplace(A1,"[A-z]+,","")&" "®exextract(A1,"\w*")