私は、次のことを行うことを目的とした比較的簡単な手順を作成しました。
- スプレッドシートにはBとCの2つの列があります。どちらのデータセットも26行目から始まります。
- Bにはプロジェクト(プロジェクト1など)の番号が含まれ、Cには各ラインアイテムの識別子が含まれているため、複数のサービスをプロジェクトに割り当てることができます。両方の変数の組み合わせにより、各ラインアイテムの一意のIDが形成されます(たとえば、プロジェクト1の3番目のアイテムの1/3)。
- 列Bに新しいプロジェクトIDが入力されるたびに、列Cは1から再開する必要があります。
- プロジェクトのリストが終了すると、ループは停止するはずです(最初のif-condition)
- 別の手順を使用して、プロジェクト番号、次に別の基準でデータセットを並べ替えます。つまり、その後、毎回列Cを書き直す必要があります。
- 私が作成したコードを読みやすくするため
ThisRow
にLastRow
私のコードはエラーメッセージを生成しませんが、望ましい結果も返しません。セルC27の値は2である必要がありますが、1を返し、同じ列の下にあるすべてのセルは空白です。イミディエイトウィンドウではすべての値が1になるため、これは奇妙に思えます(これはまだ正しくありませんが、スプレッドシートに出力されるものとは異なります)。
私はしばらくの間それを修正しようとしましたが、エラーがどこにあるのか途方に暮れています。よろしくお願いします!以下のコード:
Sub DataSort()
Dim i As Object, ThisRow As Integer , LastRow As Integer
Range("C26").Value = 1
Range("C27").Activate
ThisRow = ActiveCell.Offset(0, -1).Value
LastRow = ActiveCell.Offset(-1, -1).Value
For Each i In Range("ProcessID")
If ThisRow = 0 Then
Exit Sub
ElseIf ThisRow > LastRow Then
ActiveCell.Value = ActiveCell.Offset(0, -1).Value + 1
Else
ActiveCell.Value = 1
End If
Debug.Print ActiveCell.Value
Next i
End Sub
>更新: これはスプレッドシートのスクリーンショットです。うまくいけば、それは役立ちます: