2013-07-25 3 views
1

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? (업데이트)VBA를 사용하는 인접 셀을 나누지 않음

numerator , denominator 정수 값을 포함하는 범위이다.

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이 범위의 각 값을 통해 루프를하지 않습니다. 대신 그것은 내가 성장함에 따라 horisontally 한 걸음 내려 간다. 범위의 셀을 인접하지 않은 경우이 문제가 발생합니다.

다음은 mehow의 코드를 기반으로 한 문제의 표시입니다. 결과는 시트에서 선택된 셀입니다.

Example

+0

행 벡터인가? 그들이 세포에서 어떻게 생겼습니까? 스크린 샷이나 샘플을 제공 할 수 있습니까? 단일 셀에 몇 가지 값이 있습니까? 질문 업데이트를 위해 –

+0

+1을 설명하십시오. –

답변

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

을 제공이 코드

같은 16,


업데이트

하지 인접 셀 솔루션

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 오, 나는 사람을 본다! 업데이트가 있습니다. 내 대답은 당신이 찾고있는 것이라면 알려주세요. –

+1

매력처럼 작동합니다. 감사! – karamell

관련 문제