2013-12-19 1 views
1

이 포럼을 처음 사용하므로 문제를 정확하게 설명 할 수 없으면 사과합니다.통합 문서의 행 수가 서로 다른 연결을 사용하는 매크로

나는 같은 통합 문서의 C 열에 연결하고자하는 하나의 통합 문서에서 열 B, 행 1-1200 (예상)의 데이터를 가지고 있습니다. 이 작업을 수행하고 매크로를 작성하여이 작업을 완료하는 방법을 알고 있습니다.

이 문제는 1-2000 (추정치) 행 B 열에 데이터가있는 통합 문서가있을 때 발생합니다. 내 매크로를 사용하면 행 1200에서 멈 춥니 다.

연결 함수에 C 열을 선택하고 B 열에서 데이터가 중지되면 중지 할 수 있습니까?

모든 통합 문서에 동일한 연결 기능이 필요하지만 모든 통합 문서에서 행이 다릅니다.

Sub Macro1() 
' 
' Macro1 Macro 
' 
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-1], "" "", ""-0000"")" 
    Range("B2").Select 
    Selection.AutoFill Destination:=Range("B2:B12") 
    Range("B2:B12").Select 
End Sub 
+0

'내 매크로를 사용하면 행 1200에서 멈출 수 있습니까? 코드? –

+0

서브을 Macro1() ' '을 Macro1 매크로 ' 은 = "= CONCATENATE (RC가 [-1]," "," "," "-0000" ")" 범위 ("B2")은. 선택 ActiveCell.FormulaR1C1 Selection.AutoFill Destination : = Range ("B2 : B12") 범위 ("B2 : B12") 선택 End Sub – user3120550

+0

주석에서 매크로 읽기가 어렵습니다. 질문을 업데이트 할 수 있습니까? –

답변

1

이게 너가하려는거야? 나는 당신이 그것을 이해하는데 문제가 없도록 코드에 주석을 달았습니다. 그래도 다시 게시하면 :)

Sub Sample() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim col As Long, lRow As Long 

    Set ws = ActiveSheet 

    '~~> Check if what the user selected is a valid range 
    '~~> User has to select the range which 
    '~~> has data for example Col B 
    If TypeName(Selection) <> "Range" Then 
     MsgBox "Select a range first." 
     Exit Sub 
    End If 

    Set rng = Selection 

    '~~> Ensure that the user doesn't select range with multiple columns 
    If rng.Columns.Count > 1 Then 
     MsgBox "Please select only one column or cell" 
     Exit Sub 
    End If 

    With ws 
     '~~> Get the last row of say Col B 
     lRow = .Cells(.Rows.Count, rng.Column).End(xlUp).Row 

     '~~> Identify the column which will have formulas 
     col = rng.Column + 1 

     '~~> Identify the range which will contain the formulas 
     Set rng = .Range(.Cells(2, col), .Cells(lRow, col)) 

      '~~> Fill formuals in all in one go 
     rng.FormulaR1C1 = "=CONCATENATE(RC[-1], "" "", ""-0000"")" 
    End With 
End Sub 
+0

죄송 합니다만, 의견을 남길 수있는 방법이 있습니다. 나는이 모든 것을 처음 접했어! – user3120550

+0

@ user3120550 : 코드를 이해하는 데 도움이되는 의견이 있습니다. 일단 코드를 이해했다면 간단히 삭제하십시오. 여기에있는 아이디어는 단지 해결책을 제시하는 것이 아니라 다음에 당신이 붙어있을 때 어떻게해야 할지를 이해할 수 있도록 도와줍니다. –

+0

Gotcha .. . 나는 맹렬히 노력할 것입니다. 고마워요! – user3120550

0

나는 이것을 제공합니다. B 열이 데이터 행을 건너 뛰면 마지막 열 B 행을 통해 C 열에서 결과를 얻을 수 있습니다.

Sub Macro1() 
Dim DataRange As Range 
    Set DataRange = Application.Intersect(ActiveSheet.UsedRange, Range("B:B")) 
    DataRange.Offset(0, 1).FormulaR1C1 = "=CONCATENATE(RC[-1], "" "", ""-0000"")" 
End Sub 
관련 문제