0
私はカメラ較正用のスプレッドシートで作業しています。このスプレッドシートには、利用可能な78のターゲットのうち14を使用するオプションがあります。私は、各セルの値に基づいて、使用されるターゲットの範囲をループするコードを作成し始めました。隣接するセルにx、y、zの座標値を設定します。当初はループが範囲を通過するように作成され、各ターゲットに対応するif文を手動で書きました。さて、もう一つのforループを実装してこれを行うより良い方法があると確信しています。私が何を持っているかは、無限ループに入り続ける。 refactoredas可能性があり範囲内の値に基づいて座標を取り込むためのループスルー範囲
私のコードの試み
Sub macro()
Dim rng As range, cell As range
Set rng = range("d2:d15")
' Target 1
For i = 1 To Rows.Count
For j = 1 To 78
If Cells(i, 4).Value = j Then
Cells(i, 5) = Cells(26 + j, 2)
Cells(i, 6) = Cells(26 + j, 3)
Cells(i, 7) = Cells(26 + j, 4)
End If
Next j
Next i
End Sub
に従います。どのように78の目標値を維持していますか?配列の中にありますか?彼らは別のワークシートに保管されていますか?なぜあなたは 'rng'を設定していますが、後でそれを使うことはありませんか? –
それは無限ではなく、Rows.CountのためにExcel 2007以上であれば、私は1048576のために動いているだけです。 – cyboashu
ターゲット座標は同じシート内に保持されます。 x27、c27、d27から始まるx、y、およびzです。ここでは、スプレッドシートからコピーされた\tの例があります。 \t \t ターゲット\t X \t Y \t Z \t 0.994076386 \t 2.871819521 \t 7.414613305 \t 0.001286094 \t 2.329521288 \t 7.405560172 \t 0.001367373 \t 0.816107316 \t 7.485133244 \t 0.993239568 \t 2.88548805 \t 6.234767026 \t 0.001790363 \t 2.355691937 \t 6.328347983 \t 0.580815367 \t 2.386308878 \t 4.521358343 – Chris