2014-09-16 8 views
0

는 I 간단한 엑셀 테이블이 나는 특정 행 예excel에서 두 숫자의 차이가 0보다 큰 경우 행을 삽입하는 방법은 무엇입니까?

후에 행 n 번호를 삽입 할 :

싶습니다

행의 n 번호를 삽입하는 경우 BC 차이 열이 0보다 큽니다.

삽입 할 열의 개수는이 두 셀의 차이입니다.

(가능하면) D 열의 숫자를 삽입 된 셀 수만큼 늘리고 싶지만 사용할 수식을 모르겠습니다.

VBA에서 약간의 매크로를 수행했지만 VBA에 대한 경험이 없으며 첫 번째 행만 수행 할 수 있으며 행을 필요한 수만큼 삽입 할 수 없습니다.

내 코드 :

Sub insertCells() 

    Dim x As Long 
    c = Range("C1").Value 

    Dim id As Long 
    id = Range("A1").Value + 1 

    Dim y As Long 
    b = Range("B1").Value 

    Dim i As Long 
    i = c - b 

    Do Until i = 0 
     Rows(id).Insert Shift:=xlToRight 
     i = i - 1 
    Loop 
End Sub 

첫 번째 그림은 세포가 매크로

enter image description here

두 번째는 세포가 매크로가

실행 된 경우 어떻게 보이는지 전에 모습입니다

enter image description here

+0

후 -이다 13'' -3'은 실제로는 '0'보다 실제로 ** ** 낮다는 것을 의미합니까? 여기 뭔가가 매우 불분명합니다 ... –

+1

C는 항상 B보다 높을 것입니다. 스프레드를 읽을 때 일반적으로 왼쪽에서 오른쪽으로 읽습니다. 내가 꺼내지 못한 것은, A에 2의 값을 갖는 5 개의 레코드가 없어야합니까? 하나는 이미 존재하며 15 - 11 = 4 개의 추가 기록이 있습니다. –

+0

코드에서 나는 (자기 자신을 만들었습니다) 공식은 C-B 였고, 숫자 n이 0보다 큰 경우'n' 행을 삽입했습니다. 이 탁월한 아이디어는 D1 셀에서 시작하여 삽입하는 모든 행을 계속 추가하는 것입니다. 모든 행에 대해 동일한 열을 삽입했습니다. –

답변

3

이게 무슨 뜻 이니?

Sub Main() 
Application.ScreenUpdating = False 
    lastRow = Range("A" & Rows.Count).End(xlUp).Row ' finding last row used 

    For i = lastRow To 1 Step -1 ' iterating from last row to 1st 
     difference = Range("B" & i) - Range("C" & i) ' calculating the difference 
     If difference < 0 Then ' if difference meets your criteria 
      For j = difference To -1 ' how many rows to insert 
       Rows(i).Copy ' copy the origin 
       Range("A" & i + 1).Insert Shift:=xlDown ' insert the copied row 
       Range("D" & i + 1) = Range("D" & i + 1) + Abs(j) ' increment column D 
      Next 
     End If 
    Next 

Application.CutCopyMode = False 
End Sub 

전에

enter image description here

나는 "B와 C"의 차이는 첫 번째 행은`10 것이다라고 이해

enter image description here

+0

+1 좋은 답변;) –

+0

늦게 답장을 드려 죄송합니다. 예 그것! 이 대답을 올바른 것으로 받아들이 겠지만, 제게 설명해 주시겠습니까? 내가 말했듯이, 좋은 프로그래머가 아니고 나의 실제 프로젝트가 더 크고 나는이 코드 뒤에있는 논리를 알고 싶었다. 고마워요. –

+1

@ p3rand0r great! 그것이 당신을 도왔다면 받아 들여진 답을 표시하는 것을 잊지 마세요 :) –