私は、セル内の配列を複数の行に分割することで、vbaでコードを書きたいのです。


0

以下に示すように、単一のセルから複数の行にデータを分割しようとしています。

[Top one is before and the bottom one is after

下記のコードを使用しています。

Sub TransposeRange()

Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "Splitcell"
Set InputRng = Application.Selection.Range("A1")
Set InputRng = Application.InputBox("Range(single cell) :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Arr = VBA.Split(InputRng.Range("A1").Value, Chr(9))
OutRng.Resize(UBound(Arr) - LBound(Arr) + 1).Value = Application.Transpose(Arr)
End Sub

3
あなたの質問は何ですか?
DavidPostill

あなたが画像を挿入しようとしたならば、我々はそれを見ることができません。あなたの実際の問題は何ですか、正確には何がうまくいかないのですか?コードは何をしませんか?
Mokubai

回答:


1

入力セルに水平タブがあることを確認してください。あなたのコード:

Sub TransposeRange()
    Dim rng As Range
    Dim InputRng As Range, OutRng As Range

    xTitleId = "Splitcell"
    Set InputRng = Application.Selection.Range("A1")
    Set InputRng = Application.InputBox("Range(single cell) :", xTitleId, InputRng.Address, Type:=8)
    Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)

    Arr = VBA.Split(InputRng.Range("A1").Value, Chr(9))
    OutRng.Resize(UBound(Arr) - LBound(Arr) + 1).Value = Application.Transpose(Arr)
End Sub

典型的な結果:

enter image description here


あなたはその通りです chr(9) はタブであり、入力にタブがない場合は分割は分割されません。 OPのイメージは、分割する実際の文字が次のようになることを示唆していると思います。 chr(10) または chr(13)
Yorik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.