2016-08-26 3 views
1

리스트에 기반하여 Excel의 X 행을 삽입 할 수있는 코드를 작성하려고합니다. 코드를 통해 X 개의 행을 삽입하는 것을 알아낼 수는 있지만 목록에 따라 작업하는 방법에 대해 머리를 감쌀 수는 없습니다. 정교하게 나는 100 행까지 몇 가지 고유 한 값을 갖는 열 A를 가진 시트 1을 가지고 있고,이 고유 한 값들 중에서 얼마나 많은 행을 삽입해야 하는지를 말하는 또 다른 목록을 가지고 있습니다. 이제 목록을 통해 실행하고 시트 1에 행을 삽입하는 코드가 필요합니다. 지금까지 다음 코드를 작성했습니다.리스트를 사용하여 행 삽입하기

Sub test() 
Application.Calculation = xlCalculationManual 

Application.ScreenUpdating = False 

Application.DisplayStatusBar = False 

Dim k As Long, t As Range 
k = InputBox("No. rows to be inserted") 
Set t = Range("A2") 
Do 
Range(t.Offset(1, 0), t.Offset(k, 0)).EntireRow.Insert 
Set t = Cells(t.Row + k + 1, 1) 
If t.Offset(1, 0) = "" Then Exit Do 
Loop 
Application.Calculation = xlCalculationAutomatic 

Application.ScreenUpdating = True 

Application.DisplayStatusBar = True 

End Sub 

그러나 이것은 매우 엄격한 코드입니다. 목록에 따라 어떻게 작동합니까?

+1

"목록"뿐만 아니라 "이전"및 "이후"시나리오의 예제를 추가하십시오. – user3598756

답변

0

삽입 할 행 수를 얻기 위해 고유 값 목록에서 색인/일치를 사용할 수 있습니다. 아래에 k에 삽입 할 행 수를 얻습니다.

... 
Dim k As Long, t As Range 
Dim ws As Worksheet 
Do 
    Set ws = Worksheets("Sheet2") 
    k = WorksheetFunction.Index(ws.Range("B:B"), WorksheetFunction.Match(t.Value, ws.Range("A:A"), 0)) 
... 

참고 : 여기서 Sheet2는 삽입 할 행의 수와 함께 고유 값 목록입니다. 범위 A : A는 고유 값이고 범위 B : B는 행 수입니다.

색인에 문제가 있습니다 ... 색인 목록에 일치하는 항목이 없으면 VBA 오류가 발생합니다. =IFERROR([index/match function],0)이있는 Sheet1의 도우미 열이 더 좋거나 On Error Resume Next으로 오류를 무시할 수 있습니다.

+0

안녕하세요, 고맙습니다. 어떻게 수행 할 것인지 생각해 왔습니다. 그러나 코드를 변경 한 후 원하는 결과에 도달 할 수 없습니다. 시트 1에는 삽입 할 선, 시트 2는 삽입 할 행의 수와 동일한 고유 항목이있는 고유 항목이 있습니다. –

관련 문제