2016-09-08 4 views
1

私は例えば、物事のリストを持って、このセルを持っている:1つのセルの中の物のリストをいくつかのセルに分けるにはどうすればいいですか?

[dogs, cats, mice, cows, horses] 

そして、私は別の細胞にそれらを分離したい:

[dogs] 
[cats] 
[mice] 
[cows] 
[horses] 

はこれが行われることはできますか?

+1

はい、それは式で行うことができ、テキストを列、およびvba。何を試しましたか? –

+2

すばやく、あなたが言ったことを正確に行うには - テキストを列(データタブの下)で実行し、コンマを区切り記号として使用して行をコピーし、右ペースト - >転置を右クリックします。 – BruceWayne

答えて

1

あなたは簡単に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 
+0

ちょうど興味があります - あなたが 'Range'として'ラン 'を宣言しなかった特別な理由はありますか? Set ran = Range( "A1")の代わりに 'ran = Range(" A1 ")'を実行するだけでエラーが発生すると思います。 ...実際に格納されている 'Variant'は' A1'のセルアドレスですか? – BruceWayne

+1

範囲はセルへのパスであり、Split()は文字列のみを受け入れるため、範囲を分割できません。 –

+1

@BruceWayne彼はデフォルトである '.Value'を取得しています。 –

0

これはそれを行うだろう - あなたが選択する必要がありますそれを実行する前にセルを持つセルであり、どちらかの端に閉じた括弧( "["と "]")があると仮定します。

私は今、セルのデータ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 
+0

なぜVBAのSplit()関数を使用しないのですか? –

+0

@matt_black特に良い理由はありません - これは通常私がやる方法です(しかし 'Split()'がしばしばより良いオプションです – Jeremy

0

を私の最高の答えを持っています:

Sub dural() 
    Dim s As String, i As Long 

    s = Range("A1").Value 
    s = Mid(s, 2, Len(s) - 2) 
    ary = Split(s, ", ") 
    i = 2 

    For Each a In ary 
     Cells(i, "A").Value = "[" & a & "]" 
     i = i + 1 
    Next a 
End Sub 

enter image description here

関連する問題