2016-03-15 162 views
-1

我有一個大的表,有時有數百行。
該表由另一個導出爲ex​​cel的應用程序生成。Excel宏循環遍歷範圍,直到找到值,填充下面找到的單元格的公式範圍

一欄標題爲「調整後的價格」。
我希望此列中的所有行都包含一個公式(目前它們都是0)。

我想自動執行此過程,因爲表格一直在重新生成。

本專欄可能並不總是在相同的地方。 所以我需要一個可以找到這個列的宏(「調整後的價格」),然後用公式填充該列中的所有單元格(當然除了第一行)。

可以這樣做嗎?

在此先感謝:)

+2

是可以做到這一點。請求代碼幫助的人有**期望**顯示原始努力。開始[mcve]並閱讀[問]。 – Jeeped

回答

1

您的功課是弄清楚如何將其插入!

Option Explicit 

Sub setAdjustedPrice() 

    Dim column As Integer 
    Dim adjustedPriceColumn As String 
    Dim found As Boolean 
    Dim rowCount As Long 

    column = 1 
    rowCount = 1 

    Do While Range(FncAlphaCon(column) & rowCount).Value <> "" And found = False 

     If (Range(FncAlphaCon(column) & rowCount).Value = "Adjusted Price") Then 

      found = True 
      adjustedPriceColumn = FncAlphaCon(column) 

     Else 

      column = column + 1 

     End If 

    Loop 

    If found = True Then 

     Do While rowCount < ActiveSheet.UsedRange.Rows.count 

      rowCount = rowCount + 1 
      Range(adjustedPriceColumn & rowCount) = "YOUR FORMULA" 

     Loop 

    Else 

     MsgBox ("'Adjusted Price' column not found, cannot continue.") 

    End If 

End Sub 

Private Function FncAlphaCon(aNumber As Integer) As String 
' Fixed version 27/10/2011 

    Dim letterArray As String 
    Dim iterations As Integer 

    letterArray = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 

     If aNumber <= 26 Then 

      FncAlphaCon = (Mid$(letterArray, aNumber, 1)) 

     Else 

      If aNumber Mod 26 = 0 Then 

       iterations = Int(aNumber/26) 
       FncAlphaCon = (Mid$(letterArray, iterations - 1, 1)) & (Mid$(letterArray, 26, 1)) 

      Else 

       'we deliberately round down using 'Int' as anything with decimal places is not a full iteration. 
       iterations = Int(aNumber/26) 
       FncAlphaCon = (Mid$(letterArray, iterations, 1)) & (Mid$(letterArray, (aNumber - (26 * iterations)), 1)) 

      End If 

     End If 

End Function 
+0

謝謝!剛剛嘗試過,它完美地工作。做得好! –

相關問題