列の値に応じて異なる行のセットで独立したループを実行する必要があります。 1列目からn列目まで、そしてn + 1列目から18列目までの「火曜日」に繰り返される列値「月曜日」のループ。これらのループは連続して連続して実行する必要があります。例:Excelの連続した行のセットで別々のループを実行する方法
答えて
あなたが特定の日のために重複した時間を持っているかどうかを確認するために辞書を使用することができます。合計で、3つのネストされたループがあります。ワークシートのすべての行を最初に反復し、次に、指定した日のすべての行を反復処理し、最後の列を反復処理します。
各セルの最初の文字列(「Res01」、「Res02」など)には興味がないようですが、特定の日に同じ時刻があるかどうかを知りたい場合と、その複製の細胞。
また、指定した日に重複が必要なだけなので、その日に処理が開始されると辞書はクリアされます。辞書のキーは時間文字列であり、値はセルのアドレスです。各セルについて、マクロはその時間がすでに辞書に入っているかどうかをチェックします。それが複製であれば、元のセルと現在のセルの背景色の両方が変更されます。そうでない場合は、キーと値のペアが保存され、処理が続行されます。
重複を示す背景色(緑色/青色)を連続した日に変更して、違いをより簡単に表示することにしました。
Option Explicit
Sub HighliteDiffs()
Dim sht As Worksheet
Set sht = Worksheets("Staff Schedule")
Dim r As Integer, c As Integer, clr As Integer: clr = 4
Dim curDay As String, val As String, addr As String
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim rng As Range
With sht
Dim lastRow As Integer, lastCol As Integer
lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
r = 2
Do While r <= lastRow
If clr = 4 Then
clr = 5
Else
clr = 4
End If
dict.RemoveAll
curDay = Left(Cells(r, "A").Value, 11)
Do While curDay = Left(Cells(r, "A").Value, 11)
lastCol = .Cells(r, .Columns.Count).End(xlToLeft).Column
For c = 3 To lastCol
val = Right(.Cells(r, c).Value, 5)
If dict.Exists(val) Then
addr = dict(val)
Set rng = .Cells(Range(addr).Row, Range(addr).Column)
rng.Interior.ColorIndex = clr
.Cells(r, c).Interior.ColorIndex = clr
Else
dict(val) = .Cells(r, c).Address
End If
Next
r = r + 1
Loop
Loop
End With
End Sub
これは素晴らしいコードです!唯一の問題は、以前に投稿したように私のExcelが正確に見えないことです。最初のセルの日付は常にE4でA1ではなく、時刻G4ではC1ではありません。コードでは、列をAからEに変更し、3ではなく7から列ループを開始しました。プロセスでいくつかの重複が見付かりません。 – Sam
あなたが投稿した内容に基づいて、私が使用したデータセット用に動作します。時間だけがキーとして保存されます。つまり、 "08:45"が辞書にある場合、この時間の他のエントリは重複して表示されます。後ろにスペースがある場合や、タイムストリングが互いに異なる場合があります。重複が見逃されている理由を調べるには、デバッグする必要があります。コードにステップインしてF8キーを押すと、各行を1行ずつ実行して何が起こっているのかを見ることができます。 – Amorpheuses
現在作業中です。次に、C列のテキストに応じていくつかの行をスキップする必要があります。うまくいけば、コードを挿入できるはずです。ありがとうございました – Sam
- 1. 別々のCPUコアでタスクを並列実行する方法
- 2. make Office 2013ウィンドウを別々のプロセスで実行する方法
- 3. 別のものを次々に実行して実行する
- 4. angularjsループをエラーなしで連続的に実行する方法
- 5. 複数のExcelファイルでマクロを実行し、別々のディレクトリに保存する
- 6. サーバーサイドのソケットコードを連続して実行する方法
- 7. からexcel to txt - 別々の行
- 8. Grunt:CSSとJSのために別々のプロセスを実行する方法
- 9. 別のスレッド上のループで別のプロセスを実行する方法
- 10. 前のセットが完了した後でのみ、ループ内で一連の作業を実行します。
- 11. 連続した3行のデータセットをロードする方法
- 12. 2つの連続する日付の差異、別々の行に格納
- 13. プログラムの実行中に連続して実行するテスト
- 14. AsyncTasksを連続して実行する方法
- 15. ループ機能がVBA Excelを実行し続ける
- 16. 機能の連続実行?
- 17. 連続したGPSデータを別々の旅に分ける
- 18. jbossヒューズのラクダルートを使用してループを連続して実行する
- 19. 別の環境で別々のタスクを実行するためのgrunt watch
- 20. 別個の連続した行をしたい
- 21. 連続して実行するとSQLクエリが遅くなりますが、別々に実行するとすばやく実行します。
- 22. Pythonで2つの関数を連続して実行する方法は?
- 23. ワンクリックで多くのクエリを連続して実行する方法は?
- 24. Excelで "contains"を実行する方法
- 25. バックグラウンドワーカーを連続して実行する
- 26. CodeIgniterは別のコードを実行した後にforeachループを続ける
- 27. 複数の連続したループを乾燥する方法
- 28. MATLABで行列を定義し、複数のExcelファイルのループを実行する方法は?
- 29. Python-Seleniumは連続したループで右クリックを実行できません
- 30. mysqlで連続した重複行を数える方法
実行したコードのような追加情報を入力してください。間違いで失敗したのか、それとも期待が満たされなかったのか? –
選択されたケースは、 '大文字小文字の区別(範囲(" ")、3)を選択するのに役立つかもしれません。 –
なぜこれに連続ループを使用する必要がありますか?また、認識されていないExcel形式で日付を保持することによって、自分自身に恩恵を与えているわけではありません。 – Tom