WITH下向きに区切ら。出力内のすべてのセルをコピーします。転置を使用して貼り付けます。次に、col Aをドラッグして空白を下に埋めます。Excelはカンマを変換するには、私はこれをやろうとしている他の列
簡単な方法:(
WITH下向きに区切ら。出力内のすべてのセルをコピーします。転置を使用して貼り付けます。次に、col Aをドラッグして空白を下に埋めます。Excelはカンマを変換するには、私はこれをやろうとしている他の列
簡単な方法:(
を私はあなたにもヘルパー列のカップルと式でこの操作を行うことができ、コメントに記載し、それが本当だったと(b)はどのように難しい、それは希望の場合(a)に見てみたかったです答えは(a)はい、ちょうど約(b)非常に(私よりも複雑な公式に熟練した人がいるが)。ここで
は結果である: -
だから、ヘルパー列がちょうど私ののとjの
Column C (i) is source row
Column D (j) is string number within source row
VBAでのようなものです。しかし、これを達成するためにあなたには、いくつかの長い数式を必要とします。
C7とC8がちょうどD8において
にハードコードされている: - C8で
=IF(C7="","",IF(D7<LEN(INDEX(B$2:B$4,C7))-LEN(SUBSTITUTE(INDEX(B$2:B$4,C7),",",""))+1,D7+1,IF(C7=ROWS($B$2:$B$4),"",1)))
: - B7において
=IF(D8="","",IF(D8>D7,C7,C7+1))
: -
=IF(C7="","",MID(","&INDEX(B$2:B$4,C7)&",",FIND("<",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",","<",D7))+1,FIND(">",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",",">",D7+1))-FIND("<",SUBSTITUTE(","&INDEX(B$2:B$4,C7)&",",",","<",D7))-1))
A7: -
=IF(C7="","",INDEX($A$2:$A$4,C7))
ソースセルの変更が宛先セルに反映されるため、半ダイナミックです。固定されたソース範囲$ B $ 2:$ B $ 4に縛られていますが、可変ソース範囲でかなり簡単に動作するように変更できます。数字はすべて7桁であるとは仮定していませんが、そうした場合、B7の式が簡略化されます。
が存在しなければならない私は、VBAは数式でそれをやって比較する方法を疑問に思いました。
ここではサンプルVBAであり、よりスマートな方法があるかもしれないにも関わらず、かなり短いですそれを行うの: -
Option Explicit
Public Sub SplitRows()
Dim a() As String
Dim r1, r2 As Range
Dim i, j, k As Integer
Set r1 = Range("A2:B4")
Set r2 = Range("A7:B1000")
j = 1
For i = 1 To r1.Rows.Count
a = Split(r1.Cells(i, 2), ",")
For k = LBound(a) To UBound(a)
r2.Cells(j, 1) = r1.Cells(i, 1)
r2.Cells(j, 2) = a(k)
j = j + 1
Next k
Next i
End Sub
ありがとう、私はこれを試してみましょう。その間、私はこのデータを処理するためのPHPスクリプトを作成しました。 XLSでそれを行うのは素晴らしいことですので、確かにこれを試してみてください(XLSでVBAを使う方法を理解する必要があります) – Mark
ExcelシートからAlt-F11だけで、モジュールを挿入してコードに貼り付けます: F5を実行します。 –
単一のセルを分割し、結果の配列をループして各要素に新しい行を作成することができます。 – flohdieter
はい、それはVBAと呼ばれます。これを行うルーチンをコーディングする必要があります。 –
数式を使用して1つまたは2つのヘルパー列でそれを行うことができますが、VBAが数行だけであることは事実です –