1

この問題を解決する方法の提案はありますか?

(更新しました)

numeratordenominator整数値を含む範囲です。

これらの範囲のセルごとに分割したい、例えば:

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、範囲が行ベクトルであるため、範囲の各値をループしないことです。代わりに、私が成長するにつれて、水平に 1 ステップ下がります。この問題は、範囲のセルが隣接していない場合に発生します。

これは、 mehow のコードに基づく問題の表示です。結果は、シートで選択されたセルです。

例

4

1 に答える 1

1

スプレッドシートが次のようになっている場合

前に

次に、このコード

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

あなたにあげる

後方


Update

隣接していないセル ソリューション

あなたのシートを想定して

前

以下のコードを使用して

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

結果は

結果

于 2013-07-25T11:02:33.263 に答える