優れた配列公式:csvの内容を分割する[完了]


-1

ExcelのセルA1に「a、b、c、d、e」というコンテンツがあるとします。 配列式を書く方法があるので、B1で:B5は分割結果を示すでしょう、すなわちB1 = a、B2 = b、B3 = c、B4 = d、B5 = e?


なぜあなたはARRAY式で必要なのですか?それは一般的な「鎖」式を使って解くことができ、そして列Bの式だけが他のものと異なります。そしてUDFを使って簡単に解決できます。 PS。簡単な答えは「無理」だと思います。
Akina

1つのセル内に他のセルの集合に値を設定する配列数式を含めることはできません。各移動先セルで数式を探している場合、配列数式は無関係です。だからあなたが何を求めているのかは明らかではありません。あなたが少なくともあなたが考えているものの性質を示すために質問に疑似コードを追加することができますか?
fixer1234

タイトルを追加してデータをテーブルとして変換するのであれば、Power Queryが最適です。
Lee

回答:


1

式なしで(私のお気に入り):

A1を選択>データ>列へのテキスト>区切り文字: "、"をリミッターとして>終了(今のところ交換を選択してください。)

結果(5セル)を選択> Ctrl + C > B1を右クリックし、転置を選択します。行った。

式では:

B1  --->  =MID(A1,1,FIND(",",$A$1,1)-1)
B2  --->  =MID($A$1,FIND(",",$A$1,1)+1,FIND(",",$A$1,FIND(",",$A$1,1)+1)-FIND(",",$A$1,1)-1)
B3  --->  =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)-FIND(",",$A$1,FIND(",",$A$1,1)+1)-1)
B4  --->  =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1)-FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)-1)
B5  --->  =MID($A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1)+1,LEN(A1)-FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,FIND(",",$A$1,1)+1)+1)+1))

key:文字列中のn番目の "、"を "marker"として見つける mid() 関数。

それが役に立てば幸い。


1
あなたが使うことができます =MID($A$1,ROW()*2-1,1) B1でドラッグして、私はすでに答えとしてこれを与えたが、OPはそれを好きではなかった
PeterH

あなたの努力のために+1!
PeterH

サポートしてくれてありがとう.. ||ところで、セル式をA1の内容だけに依存させ、出力先を独立させることはしたくありません。 ||あなたの処方はかなりきちんとしています+クールすぎます! / (^_^)
p._phidot_

0

私は提案したいと思います マクロ これは最高です。セルから行にコンマ区切り値を分割するための最速の方法。

enter image description here

このMACROは列Aのデータを受け取り、結果を列Bに入れます。

Sub SplitData()
    Dim src As Range
    Dim result As Variant
    For Each src In Range("A:A").SpecialCells(xlCellTypeConstants)
        result = Split(src, ",")
        With Cells(Rows.Count, 2).End(xlUp)
            Range(.Offset(1, 0), .Offset(1 + UBound(result, 1), 0)) = Application.WorksheetFunction.Transpose(result)
        End With
    Next src
End Sub

N.B.

  • アクティブシートプレスで Alt+F11 開くために VB Editor それから Copy & Paste このコードを標準モジュールとして、最後に RUN それ。
  • Range("A:A") コラム用 A そして (Rows.Count.2) コラム用 B 編集可能です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.