私は例えば、物事のリストを持って、このセルを持っている:1つのセルの中の物のリストをいくつかのセルに分けるにはどうすればいいですか?
[dogs, cats, mice, cows, horses]
そして、私は別の細胞にそれらを分離したい:
[dogs]
[cats]
[mice]
[cows]
[horses]
はこれが行われることはできますか?
私は例えば、物事のリストを持って、このセルを持っている:1つのセルの中の物のリストをいくつかのセルに分けるにはどうすればいいですか?
[dogs, cats, mice, cows, horses]
そして、私は別の細胞にそれらを分離したい:
[dogs]
[cats]
[mice]
[cows]
[horses]
はこれが行われることはできますか?
あなたは簡単にVBA
でこれを行うことができます。
Sub splitString()
Dim ran, splitS() As String
ran = Range("A1")
splitS() = Split(ran, ",")
For j = LBound(splitS) To UBound(splitS)
Range("B" & (j + 1)) = splitS(j)
Next j
End Sub
あなたも角括弧は、以下のコードを使用したい場合:
Sub splitStringWithSquareBrackets()
Dim ran, splitS() As String
ran = Range("A1")
ran = Right(ran, Len(ran) - 1)
ran = Left(ran, Len(ran) - 1)
splitS() = Split(ran, ",")
For j = LBound(splitS) To UBound(splitS)
Range("B" & (j + 1)) = "[" & splitS(j) & "]"
Next j
End Sub
ちょうど興味があります - あなたが 'Range'として'ラン 'を宣言しなかった特別な理由はありますか? Set ran = Range( "A1")の代わりに 'ran = Range(" A1 ")'を実行するだけでエラーが発生すると思います。 ...実際に格納されている 'Variant'は' A1'のセルアドレスですか? – BruceWayne
範囲はセルへのパスであり、Split()は文字列のみを受け入れるため、範囲を分割できません。 –
@BruceWayne彼はデフォルトである '.Value'を取得しています。 –
これはそれを行うだろう - あなたが選択する必要がありますそれを実行する前にセルを持つセルであり、どちらかの端に閉じた括弧( "["と "]")があると仮定します。
私は今、セルのデータA1で..
Sub ImAmazing()
Dim sString As String, i As Long
If Trim(ActiveCell.Value) = "" Then Exit Sub
ActiveCell.Value = Mid(ActiveCell.Value, 2, Len(ActiveCell.Value) - 2)
Do Until InStr(ActiveCell.Value, ",") = 0
i = i + 1
Cells(ActiveCell.Row + i, ActiveCell.Column).Value = "[" & Left(ActiveCell.Value, InStr(ActiveCell.Value, ",") - 1) & "]"
ActiveCell.Value = Right(ActiveCell.Value, (Len(ActiveCell.Value) - InStr(ActiveCell.Value, ",") - 1))
Loop
ActiveCell.Value = "[" & ActiveCell.Value & "]"
End Sub
なぜVBAのSplit()関数を使用しないのですか? –
@matt_black特に良い理由はありません - これは通常私がやる方法です(しかし 'Split()'がしばしばより良いオプションです – Jeremy
はい、それは式で行うことができ、テキストを列、およびvba。何を試しましたか? –
すばやく、あなたが言ったことを正確に行うには - テキストを列(データタブの下)で実行し、コンマを区切り記号として使用して行をコピーし、右ペースト - >転置を右クリックします。 – BruceWayne