0

誰か助けてくれませんか、私は VBA の初心者です。助けてくれてありがとう。私の質問がすでに解決されているリンクがある場合は、正しい方向に向けてください。ここや他のサイトを検索しましたが、少なくとも始めるきっかけになるものは見つかりませんでした。以下に示すように、すべての行のセルをループし、それらを別々の行に転置する VBA コードを作成したいと思います。

12000 行のデータと複数の列を含む Excel スプレッドシートがあります。各行には、静的フィールドとして列「A」から「Q」があります。名前、生年月日、ID_Number など "Q" 列から "DD" 列まで、"City" 列と "RegDate" 列でデータを繰り返しました。 、RegDateN。都市名はヘッダーとして使用され、データ セルには、個人が登録されているすべての都市の下に「R」が表示され、その隣の列に登録日が表示されます。それ以外の場合はエントリはありません。

このデータを変換して、人が登録されている都市ごとに、静的フィールド「A」から「P」、「City」、および「RegDate」を示す新しいデータ行、つまり列「 P" i には、"City" と "RegDate" の 2 つの列しかありません。

列 Q から列 DD までループするコードの作成に本当に苦労しています。「R」が検出されるたびに新しい行を作成し、列「A」を「P」に行をコピーし、新しい列に市の名前を挿入します」 Q" と RegDate を新しい列 "R" に格納してから、12000 行すべてが変換されるまで次の行に移動します。

特に「R」が発生したすべてのレコードに対して新しいロールを作成するループを設定する際に、私が始めるための助けをいただければ幸いです。

4

1 に答える 1

0

この情報を右端の 2 つの新しい列 ( DEDF ) に入れることだけを検討しましたか? 次に、 Q to DDを非表示にするか、それらの列を削除できます。

これを行うためのループコードについては:

Dim cr As Long 'current row
Dim cc As Long 'current column
For cr = 2 To 12000
  For cc = 17 To 108 Step 2
    If Cells(cr, cc).Value = "R" Then
      'make column 109 (DE) in current row = city name
      Cells(cr, 109).Value = Cells(1, cc).Value
      'make column 110 (DF) in current row = date of registration
      Cells(cr, 110).Value = Cells(cr, cc + 1).Value
    End If
  Next
Next
于 2013-09-03T15:50:46.850 に答える