簡體   English   中英

按列循環遍歷單元格,然后通過函數(Excel VBA)將每個當前單元格值轉換為新的單元格值

[英]Looping through cells by column and converting each current cell value to new cell values through a function (Excel VBA)

我正在嘗試解決一個問題,該問題要求使用公式(constant $ = current $ /(CPI-U * 0.01))將當前美元金額轉換為恆定美元金額。

我想使用excel vba首先遍歷一列中的每個單元格,然后在到達列底部無數據的單元格之后使用下移到下一列 (使用offset?)。 該循環不包含第一列或最后一列(年份和CPIU),並且每次迭代都將當前單元格美元值輸入到公式中,並將當前單元格美元值替換為更新后的常數美元值(而不是將其放入另一個表中) 。

例如,如果B2的像元值為11116,而當年對應的CPIU為41.8,則將11116輸入到函數= QUOTIENT(11116,PRODUCT(41.8,0.01))中。 用單元格B2中的26593替換11116。

我還想讓CPIU單元格引用在每次循環迭代時進行更新 例如,CPIU位於“ F”列中,因此,如果要選擇其單元格B2,則應選擇F2,C3至F3,依此類推。

這是下面的excel函數示例:

ActiveCell.Formula = "=QUOTIENT(B2,PRODUCT(F2,0.01))"

* B2將被循環迭代器代替,但仍在嘗試找出如何在每次迭代中更新F列

這是表格: 數據表 *范圍A1:F17(包括標題)

這是vba過程循環的開始:

Public Sub LoopThroughAllTableCells()
    Dim convertedValue As Long

    For Each c In Worksheets("Sheet1").Range("B2:E17").Cells

    Next   
End Sub

*不確定當前循環是否正確地循環通過一列中的每個單元格,然后移至下一列。

對於冗長的帖子,我們深表歉意,但將這些片段拼在一起時遇到了麻煩。 任何幫助將非常感激!

嘗試這個:

Public Sub LoopThroughAllTableCells()

Range("B2").Select 'position of the first cell and column you want to check
Do Until ActiveCell.Column = 6
    Do Until ActiveCell.Value = ""
        ActiveCell.Value = ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01)
        ActiveCell.Offset(1, 0).Select
    Loop
    Cells(2, ActiveCell.Column + 1).Select
Loop

End Sub

如果您需要將值設為Integer(無小數),則更改此行:

ActiveCell.Value = ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01)

並使用此行:

ActiveCell.Value = Application.WorksheetFunction.Round(ActiveCell.Value / (Range("F" & ActiveCell.Row).Value * 0.01), 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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