-1

職場では、あるシートから別のシートに大量の情報をコピーしなければならないことがよくあります (Excel 2007)。問題は、次の例のように、改行で折り返された単語を含むシート 1 の行をシート 2 の複数のセルにコピーしたいことです。

Sheet1 は次のようになります (ただし、50 ~ 200 行あります)。

Row    A          B          C       D       E      F....
1      PN         Name       Task

2      1-234      Text1      Text2
                             is word-
                             wrapped

3      2-345      Text3      Text4
                             Text5

改行ごとに新しい行を取得できるように、この情報をシート 2 にコピーするのに役立つマクロを作成したいと考えています。Sheet2 は次のようになります。

Row    A          B          C        D       E      F....

1      PN         Name       Task

2      1-234      Text1      Text2

3      1-234      Text1      is word-

4      1-234      Text1      wrapped

5      2-345      Text3      Text4

6      2-345      Text3      Text5

つまり、C列のタスクごとに新しい行を作成したい

誰でも私にいくつかの指針を与えることができますか?私はしばしばこれを深夜に行う必要があり、すべての行をコピーするまで寝ることができません。

ありがとう!

4

1 に答える 1

0

後でもっとうまくサポートできますが、今のところはヒントだけです。

Range 変数を列 C に設定します。

Dim DataColumn as Range

Set DataColumn = Sheet1.Range("C:C")

arow index = iを 1 から最後まで (A 列が空になるまで) に設定します。i次のように、内部ループごとにこれを増やします。

while loop終了行が異なるため、実行します(行を挿入します)

ループ内で、 を取得しDataColumn.Rows(i).Valueます。文字列として変数に格納する

内部ループを実行して、値内のすべての改行文字を検索します。その値で最初の改行文字 (私はその と信じていますChr(10)) を検索します ( InStr(text)vba メソッドだと思います) 見つからない場合は、この内部ループを終了します

見つかった場合はLeft(text)、最初の改行文字の前のテキストの部分を取得します。その左側の部分に行の値を代入します。(初めて行を追加しない場合)保存された値からその部分を削除します(そのRight(text)ために を使用します)。次のループ反復では、改行を再度検索します。今回は、i行インデックスに行を追加します。( DataColumn.Rows(i).EntireRow.Insert)

前の行からすべてのデータをコピーしてこの新しい行に入れ、C 列のテキストの左側の部分を使用します。

改行が見つからなくなるまで繰り返し、次に進みます。

于 2013-05-13T15:07:12.030 に答える