[英]How I can make a loop to divide each cell 3 times?
我已經下載了美國國內生產總值,但這最初是三個月的,我需要它我的月份,因此,我想划分 GDP / 3 的每個單元格以使我的時間序列更長,並且能夠按月 plot 它:我想在 VBA 中創建一個循環,將 GDP 列表的每個值除以 3 次,然后將其放在計算出的每個新值的下方:
Sub PIB()
Set lista = Range("D13:D275")
For Each cell In lista
For i = 1 To 3
Range("E13").Offset(i - 1, 0).Value = cell.Value / 3
Next i
Next cell
End Sub
盡管如此,當我運行它時,它會正確划分,但只是在前 3 個單元格上:
我想有效地將每個單元格划分 3 次並將每個值放在彼此下方,我該怎么做?
如果您需要將每個值拆分為三行,請使用以下代碼:
Sub SplitOnThreeMonths()
Dim sh As Worksheet, arr As Variant, arrFin As Variant, lastR As Long
Dim i As Long, j As Long, k As Long
Set sh = ActiveSheet
lastR = sh.Range("D" & Rows.count).End(xlUp).row
arr = sh.Range("D13:D" & lastR).Value
ReDim arrFin(1 To UBound(arr) * 3, 1 To 1)
k = 1
For i = 1 To UBound(arr)
For j = 1 To 3
arrFin(k, 1) = arr(i, 1) / 3: k = k + 1
Next j
Next i
sh.Range("E13").Resize(UBound(arrFin, 1), UBound(arrFin, 2)).Value = arrFin
End Sub
它也將允許相同的國內生產總值,即使這種情況不太可能發生。 但是,誰知道呢?
這是你正在嘗試的:
Sub PIB()
Dim arr As Variant: arr = Range("D13:D275").Value
Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim x As Long
For x = LBound(arr) To UBound(arr)
For i = 1 To 3
dict.Add Join(Array(arr(x, 1), x, i), "|"), arr(x, 1) / 3
Next i
Next
Range("E13").Resize(dict.Count).Value = Application.Transpose(dict.Items)
End Sub
請注意非顯式Range
引用。
我假設您需要插入 2 行來為分割值騰出空間 3 次 -
但是,如果您不需要保留相鄰列中的數據位置,則使用 arrays 提供的其他答案比這個更好:
Sub PIB()
For i = 275 To 13 Step -1
Rows(i + 1 & ":" & i + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range(Cells(i, "E"), Cells(i + 2, "E")).Value2 = Cells(i, "D").Value2
Next i
End Sub
請注意,我沒有限定你的范圍,因為我不知道你想要它們是什么,猜測它是你當前的工作表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.