2017-05-24 1 views
0

다양한 예제를 살펴 보았지만 필자의 필요와 일치하지 않습니다. 여러 셀을 기반으로 시트를 채워야합니다. 예를 들어, Sheet 1 C5 셀의 경우 값 2를 가졌고 c6의 값은 5 였고 C7의 경우 8을 가졌습니다. 시트 2에서 "e001, e002"로 열을 만들고 그 후 세포 a3에서 "E101, .... E105"그리고 나서 "E401 .... E408" vba를 사용하지 않는다면 더 좋을 것입니다. EXcel의 다른 시트에있는 입력을 기반으로 행 채우기

Sample sheet 2 enter image description here

다음 enter image description here

Sample sheet

내가 작성하지만 내 기대에 작동하지 않는 한 코드이다.

Public Sub InsertTagNumbers() 
    Dim ehv_breaker As Long 
    Dim row_no As Long 
    Dim breaker11kv As Long 
    Dim breaker33kv As Long 
    Dim breaker415V As Long 
    Dim breaker415E As Long 
    Dim carry11 As Long 
    Dim carry33 As Long 
    Dim carry415 As Long 
    Dim counter1 As Integer 
    Dim counter2 As Integer 

    ehv_breaker = 0 
    row_no = 5 
    Sheets("Sheet2").Range("b5").Select 

    For ehv_breaker = 1 To Sheets("Sheet1").Range("c6").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(6, 4) & 
     Format$(ehv_breaker, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next ehv_breaker 

    For breaker11kv = 1 To Sheets("Sheet1").Range("c7").Value 
     Sheets("Sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(7, 4) & 
     Format$(breaker11kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker11kv 
    carry11 = breaker11kv 

    For breaker33kv = 1 To Sheets("Sheet1").Range("c8").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(8, 4) & 
     Format$(breaker33kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker33kv 
    carry33 = breaker33kv 

    For breaker415V = 1 To Sheets("Sheet1").Range("c9").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(9, 4) & 
     Format$(breaker415V, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     Next breaker415V 
    carry415 = breaker415V 

    For breaker415E = 1 To Sheets("Sheet1").Range("c10").Value 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(10, 4) & 
     Format$(breaker415E, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker415E 

    'For breaker11kv > breaker11kv To Sheets("Sheet1").Range("c11").Value + carry11 
    Do 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(11, 4) & 
     Format$(breaker11kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
     breaker11kv = breaker11kv + 1 
    Loop Until breaker11kv > Sheets("Sheet1").Cells("c11").Value + carry11 
    'Loop Until breaker11kv > Sheets("Sheet1").cells(c11").Value + carry11 
    'Next breaker11kv 

    For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(12, 4) & 
     Format$(breaker33kv, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker33kv 

    For breaker415V = breaker415V To Sheets("Sheet1").Range("c13").Value + carry415 
     Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(13, 4) & 
     Format$(breaker415V, "00") 
     ActiveCell.Offset(1, 0).Select 
     row_no = row_no + 1 
    Next breaker415V 

    MsgBox "ehv_breaker=" & ehv_breaker 
    Application.ScreenUpdating = False 
End Sub 
+0

StackOverflow에 오신 것을 환영합니다. 이 코드는 무료 코드 작성 서비스가 아닙니다. 그러나 동료 프로그래머 (및 지망자)가 자신의 코드를 작성하는 것을 돕기 위해 열심입니다. [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask)의 도움말 항목을 읽으십시오. 그 후에, 당신이 달성하고자하는 과제를 완료하기 위해 지금까지 작성한 VBA 코드로 질문을 업데이트하십시오. 우리는 당신을 기다리고있을 것입니다. 도움을 줄 준비가되어 * 코드 * 작성을 도와드립니다. **이 작업을 자동화하려면 ** VBA가 필요합니다. 그래서, 당신은 어떤 것을 배우기 시작해야합니다 ... – Ralph

+0

동일을 업데이 트하지 못해 죄송합니다. 그러나 나는 일하고 있었고 누군가가 도움이되기를 희망하는 코드를 추가했다. – Andee

답변

0

첫 루프가 잘 보이고 Do .. Loop Until이 약간 있습니다.

는 엉망 것 같다 후 루프 예를 들어 :

For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33 

어떻게 그 자체로서 초기화되지 않은 변수를 시작할 수 있나요? 1시에 시작해야합니까?

For breaker33kv = 1 To Sheets("Sheet1").Range("c12").Value 

변수가 무엇입니까? 동기화 및 비동기식 차단기를 함께 그룹화하려는 경우 Sheet1! 7 : 7 직후에 Sheet1! 11 : 11을 처리 한 후 Sheet1! 8 : 8으로 이동해야합니다.

관련 문제