[英]Start on first blank row and declaring variable for counter in For..Next Loop in VBA
[英]Endless loop with For..Next statement
目標:開發一個宏,以便在sheet1中進行選擇,將第十二行中的值除以1.35,然后將其轉移到sheet2中選定的單元格區域中。
我從簡單開始,它的工作原理是:
Worksheets("Sheet2").Cells(114, 12).Formula = Worksheets("Sheet1").Cells(58, 14) / 1.35
Worksheets("Sheet2").Cells(115, 12).Formula = Worksheets("Sheet1").Cells(70, 14) / 1.35
Worksheets("Sheet2").Cells(116, 12).Formula = Worksheets("Sheet1").Cells(82, 14) / 1.35
Worksheets("Sheet2").Cells(117, 12).Formula = Worksheets("Sheet1").Cells(94, 14) / 1.35
Worksheets("Sheet2").Cells(118, 12).Formula = Worksheets("Sheet1").Cells(106, 14) / 1.35
Worksheets("Sheet2").Cells(119, 12).Formula = Worksheets("Sheet1").Cells(118, 14) / 1.35
Worksheets("Sheet2").Cells(120, 12).Formula = Worksheets("Sheet1").Cells(130, 14) / 1.35
Worksheets("Sheet2").Cells(121, 12).Formula = Worksheets("Sheet1").Cells(142, 14) / 1.35
然后,我想使用循環細分代碼,但無法正確執行。
這是我所擁有的:
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Do
i = 12
j = 14
For l = 114 To 121
For k = 58 To 142 Step 12
Worksheets("Sheet2").Cells(l, i).Formula = Worksheets("Sheet1").Cells(k, j) / 1.35
Next k
Next l
Loop Until l = 121
我的最終目標是在輸入數據時跨不同的列重復此循環。
我將使用索引來執行此操作=INDEX(Sheet1!$N$58:$N$142,(ROWS($A$114:$A114)-1)*12)/1.35
請使N為您試圖除以的列將其放在您要填充sheet2中的單元格中
訣竅是取出“ do-loop L”。 這將導致無限循環,因為您永遠不會增加“ L”。 (使用相同命名變量的for循環,只有在自己的作用域內才具有該變量...然后它將不再是無限的。
嘗試如下:
Dim k, l As Integer
'Set before row
k = 46
For l = 114 To 121 Step 1
Sheets("Sheet2").Cells(l, 12) = Sheets("Sheet1").Cells(k + 12, 14) / 1.35
Next l
我不清楚您的要求,也就是說,不知道要插入的內容(公式或值)。
如果要將公式設置為Sheet2的單元格 ,請如下修改設置行:
Sheets("Sheet2").Cells(l, 12).Formula = "=" & Sheets("Sheet1").Cells(k + 12, 14).Address & "/1.35"
這應該工作:
Sub Temp2()
Dim X As Long, ReadCol As Long, UpdateCode As Long
ReadCol = 14
UpdateCol = 12
For X = 114 To 121
Worksheets("Sheet2").Cells(X, UpdateCol).Formula = Worksheets("Sheet1").Cells(58 + ((X - 114) * 12), ReadCol) / 1.35
Next
End Sub
我沒有要測試的任何示例數據,因此這是一個調試版本,它將輸出到立即窗口(CTRL-G),整行將其編譯為:
Sub Temp2()
Dim X As Long, ReadCol As Long, UpdateCode As Long
ReadCol = 14
UpdateCol = 12
For X = 114 To 121
Debug.Print "Worksheets(""Sheet2"").Cells(" & X & ", " & UpdateCol & ").Formula = Worksheets(""Sheet1"").Cells(" & 58 + ((X - 114) * 12) & ", " & ReadCol & ") / 1.35"
Next
End Sub
結果:
Worksheets("Sheet2").Cells(114, 12).Formula = Worksheets("Sheet1").Cells(58, 14) / 1.35
Worksheets("Sheet2").Cells(115, 12).Formula = Worksheets("Sheet1").Cells(70, 14) / 1.35
Worksheets("Sheet2").Cells(116, 12).Formula = Worksheets("Sheet1").Cells(82, 14) / 1.35
Worksheets("Sheet2").Cells(117, 12).Formula = Worksheets("Sheet1").Cells(94, 14) / 1.35
Worksheets("Sheet2").Cells(118, 12).Formula = Worksheets("Sheet1").Cells(106, 14) / 1.35
Worksheets("Sheet2").Cells(119, 12).Formula = Worksheets("Sheet1").Cells(118, 14) / 1.35
Worksheets("Sheet2").Cells(120, 12).Formula = Worksheets("Sheet1").Cells(130, 14) / 1.35
Worksheets("Sheet2").Cells(121, 12).Formula = Worksheets("Sheet1").Cells(142, 14) / 1.35
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.