2013-07-25 64 views
1

有關如何解決此問題的任何建議?使用VBA劃分不相鄰的單元格

(更新)

numeratordenominator是含有整數值範圍。

我想通過這些範圍的細胞做除法單元,e.g:

numerator(1)/denominator(1) numerator(2)/denominator(2) ... 

,結果粘貼quotient。所有範圍都是相同的大小,並且是行矢量的尺寸。

我的解決方案的嘗試:

Sub DivRanges() 
    Dim targetRng As Range, sourceRng1 As Range, sourceRng2 As Range  
    For i = 1 To targetRng.Cells.Count 
     quotient.Cells(i).Value = numerator.Cells(i).Value/denominator.Cells(i).Value 
    Next i 
End Sub 

的問題是,DivRanges不循環通過範圍的每一個值,因爲它們是行向量。相反,隨着我的成長,它會向下滑動一下。當範圍的單元格不相鄰時,會發生此問題

下面是根據mehow代碼顯示的問題。結果是在工作表中選擇的單元格。

Example

+0

行向量?他們在單元格中看起來像什麼?你能提供截圖或樣本嗎?單細胞中有幾個值?請解釋 – 2013-07-25 10:53:42

+0

+1更新問題 – 2013-07-25 13:49:56

回答

1

如果您的電子表格看起來像

bef

那麼這段代碼

Sub DivRanges() 
    Dim quotient As Range, numerator As Range, denominator As Range 

    Set numerator = Range("A1:D1") 
    Set denominator = Range("A2:D2") 
    Set quotient = Range("A3:D3") 

    Dim i As Long 
    For i = 1 To quotient.Count 
     quotient.Cells(i).Value = numerator.Cells(i).Value/denominator.Cells(i).Value 
    Next i 
End Sub 

給你

aft


更新

不相鄰細胞溶液

假設你片

before

使用下面的代碼

Sub DivRanges() 
    Dim quotient As Range, numerator As Range, denominator As Range 

    Set numerator = Range("A1, C1, D1, E1") 
    Set denominator = Range("A2, C2, D2, E2") 
    Set quotient = Range("A3, C3, D3, E3") 

    Dim c As Range 
    Dim i As Long 
    i = 0 
    For Each c In quotient 
     Range(c.Address) = Range(getNum(numerator.Address, i))/Range(getNum(denominator.Address, i)) 
     i = i + 1 
    Next 

End Sub 

Function getNum(str As String, i As Long) As String 
    getNum = Split(str, ",")(i) 
End Function 

結果是

result

+0

你是對的。但在我的情況下,細胞不相鄰,這會導致問題。我將在描述中添加這個。 – karamell

+0

@karamell哦,我看到男人!我有更新我的答案,請讓我知道如果這就是你要找的 – 2013-07-25 13:49:32

+1

工程就像一個魅力。謝謝! – karamell

相關問題