2016-11-25 14 views
2

필자는 이후에 사용하는 통합 문서의 괴물을 관리하기 쉽도록 만들고 있습니다. Excel의 기능을 거의 모르는 사람들에게 버튼을 더 사용자 친화적으로 만들기 위해 버튼을 눌렀을 때 실행되는 많은 코드가 있습니다. 여기 제가 도움이 필요한 곳이 있습니다.시트 전체에 걸쳐 복사 할 때 구조적 참조가 절대 값으로 변경됩니다.

비슷한 표가있는 여러 장이 있습니다. 첫 번째 시트에는 고객 정보의 마스터 목록이 포함되어 있으며 버튼을 누르면이 정보가 서로 다른 시트에 복사되고 정렬되어 해당 고객을 각 시트에 분류합니다. 이렇게하면 첫 번째 시트에만 새 정보를 입력하고 시트를 자동으로 채워서 사람의 실수를 최소화 할 수 있습니다.

많은 오류를 줄이기 위해 테이블에서 구조화 된 참조를 사용했습니다. 나는 원래 이런 식으로하지 않았지만, 나는 시간이 지남에 따라이 워크 북을 개선하려고 노력해왔다. 어쨌든, 그래서 각 테이블의 열 "충전 유형"을 가지고 있고, 총 열 참조 그것을

대단한
[@[Charge Type]] 

으로 고려 고객은 추가 꽤 정기적으로 제거되고이 오류를 줄인다. 이 공식은 다른 시트 중 하나에 복사됩니다 때

그러나, 그것은 "All_List"입니다 Sheet1의 테이블의 이름을 추가

All_List[@[Charge Type]] 

까지 변환됩니다. 이제는 새로운 시트의 새 테이블에서 특히 "Charge Type"열을 참조하고 싶습니다. 그리고 어떻게하면 그 삶의 방식을 알 수 없습니까?

+0

''대신'[@ [충전 형] '의 대부분의 경우 사용할 수 있습니다 [충전 유형, 그러나 그것이 'All_List [Charge Type]'으로 복사 될지 확실하지 않다. – Slai

+0

제목을 "Copying ListObjects formulas"로 바꾸라고 제안한다. – EEM

답변

0

이 용액을 다음 ListObject"필드" 화학식을 보유하는 변수를 사용하여 홈통 동일한 "필드"와 같은 통합 문서의 모든 다른 ListObjects 루프하고 "필드"에 수식을 적용한다. 후

Sub ListObjects_Formula_Copy() 
Dim wsh As Worksheet 
Dim lob As ListObject 
Dim rTrg As Range 
Dim sFld As String 
Dim sFmlR1C1 As String 

    Rem Get Formula from Primary ListObject 
    sFld = "Price"              'Change as required 
    Set lob = ThisWorkbook.Sheets("Sht(0)").ListObjects(1)    'Change as required 
    sFmlR1C1 = lob.ListColumns(sFld).DataBodyRange.Cells(1).FormulaR1C1 

    Rem Apply Formula to Other ListObjects 
    For Each wsh In ThisWorkbook.Worksheets 
     If wsh.Name <> "Sht(0)" Then 
      For Each lob In wsh.ListObjects 
       Rem Validate Field 
       Set rTrg = Nothing 
       On Error Resume Next 
       Set rTrg = lob.ListColumns(sFld).DataBodyRange 
       On Error GoTo 0 
       Rem Applies Formula 
       If Not (rTrg Is Nothing) Then rTrg.FormulaR1C1 = sFmlR1C1 
    Next: End If: Next 

End Sub 

하고 ListObjects 전에

하고 ListObjects enter image description here

+0

나는 pl가 될 것이다. 이걸 가지고 주변을 둘러보고 내 필요에 맞출 수 있는지 알아봐. 이 항목을 수정하여 여러 항목을 포함 할 수 있습니까? 현재로서는 내 코드가 단일 열뿐만 아니라 전체 테이블 정보 (헤더 제외)를 복사합니다. – zcr07

+0

귀하의 게시물에 언급 된 문제에 대한 답변 : _ "이제는 새로운 시트의 새로운 테이블에있는"청구 유형 "열을 참조하고 싶습니다. 답을 수락하고 문제의 세부 사항과 함께 다른 질문을 게시하도록 제안하십시오. – EEM

+0

좋아, 그럼 그 시트에있는 유일한 테이블이 아니라면 어떨까요? 워크 시트의 두 번째 테이블 인 경우 ListObjects (2)와 같은 것을 사용합니까? – zcr07