簡體   English   中英

我如何制作一個循環將每個單元格划分 3 次?

[英]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 個單元格上:

https://i.stack.imgur.com/pTflD.png

我想有效地將每個單元格划分 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM