2016-10-23 2 views
0

내가 도와 줄 수 있습니까? 나는 아래 코드와 관련이 있다고 생각한다. 나는 내가 원했던 코드를 거의 가지고있다. 그러나 결국 그것은 내가 좋아하는 것을하지 않는다.이전 용지의 데이터 얻기

Dim acs, cos, as_col, as_row As Integer 

    cos = Sheets.Count 
    acs = ActiveSheet.Index 

    as_LRow = Sheets(acs).Cells(Sheets(acs).Rows.Count, "A").End(xlUp).Row 

    For as_row = 3 To as_LRow 
     std_number = Sheets(acs).Cells(as_row, 1).Value 

     earliersheets = acs - 1 

     For s = 1 To earliersheets 
      ilast_row = Sheets(s).Cells(Sheets(s).Rows.Count, "A").End(xlUp).Row 
      For r = 3 To ilast_row 
       std_number_new = Sheets(s).Cells(r, 1).Value 

       If std_number = std_number_new Then 
        a = a & Sheets(s).Cells(r, 6).Value 
        'Sheets(acs).Cells(as_row, 8).Value = Sheets(s).Cells(r, 8).Value 
        Sheets(acs).Cells(as_row, 8).Value = Sheets(acs).Cells(as_row, 6).Value & " + " & a 

       End If 
       a = "" 
      Next r 

     Next s 

    Next as_row 

는 내가 원하는 것은 : 추가 한 후, 수동으로 새 시트가 나는 버튼을 누르세요. 이 버튼은 위의 코드를 활성화합니다. 내가 원하는 것은 열 "A"의 particulaire 셀에서 값을 확인하는 것입니다. 이 열의 값이 이전 시트의 값과 일치하면 새로 추가 된 시트의 여섯 번째 열에 값이 표시됩니다. 위의 코드는 그렇게하지만 두 장의 시트에서만 작동합니다. 두 개 이상의 시트를 만들면 두 개 이상의 값이 표시되지 않습니다. 이 파일은 다음에서 매크로를 실행 세 번째 (그리고 아마도 두 번째 시트)에서 H-열을 취소 연 후 Check.xlsm
:

업데이트 나는 링크에서 내 파일을 추가했습니다. 내가 무슨 뜻인지 알게 될거야. enter image description here

내가 원한 것은 앞의 시트에서 이전 값을 모두 column-H로 옮겼다는 것이다. 예를 들어 두 개의 셀에 값을 표시했는데이 값은 매크로를 실행 한 후 H- 열에 표시됩니다.

+0

당신은 열 여섯을 업데이트하려고합니까? 귀하의 코드는 8 열에 새로운 값을 삽입합니다. (Sheets (acs) .Cells (as_row, 8) .Value = Sheets (acs) .Cells (as_row, 6) .Value & "+"& a' 열 8 새로운 시트의 열 6에있는 값에 "+"가 추가되고 이전 시트가 처리 된 값이 추가됩니다. 따라서 'std_number'가 여러 이전 시트에서 발견되면 마지막 값만 새 시트의 열 6에있는 값에 추가되고 열 8에 위치 함) – YowE3K

+0

도움말, 업데이트 – Tarik

+0

참조 Nope. 안돼. ** 제 3 자 사이트에 대한 링크를 따르지 않을 것입니다 **. (명백한 보안 문제를 제외하고는 사이트의 미래 사용자가 질문을 전체적으로 볼 수 없게 될 것입니다. 왜냐하면 그 사람들은 모두 부러진 링크이기 때문입니다.) 질문에 이미지를 붙여주세요. (그리고 당신의 코드가 ** 당신의 질문에 코드를 올렸기 때문에 ** 나는 이미 알고 있습니다. ** 당신이 원하는 ** 것에 대해 더 많은 정보가 필요합니다. 예를 들어, 당신은 8 번 열을 업데이트하려고합니다. 칼럼 6/F?) – YowE3K

답변

1

문제는 항상 현재 시트의 F 열에서 값을 가져 와서 루프 내에서 처리되는 시트의 F 열에서 값을 추가하여 만든 값을 H 열에 저장했다는 것입니다. 루프 내에서 다음 시트로 이동하면 이전 값을 새 값으로 바꿉니다.

시트 w3-6을 처리 할 때 먼저 시트 w1-4를보고 "13 + 34"값을 생성하고이를 w3-6 셀 H3에 저장합니다. 그런 다음 시트 w2-5를보고 "13 + 18"값을 생성하고 현재 시트 w3-6의 셀 H3에있는 "13 + 34"값을 "13 + 18"값으로 바꿉니다.

대신이 코드를보십시오 :

Dim acs As Long, cos As Long, as_col As Long, as_row As Long 
Dim s As Long 
Dim as_LRow As Long 
Dim ilast_row As Long 
Dim r As Long 
Dim a As String 

cos = Sheets.Count 
acs = ActiveSheet.Index 

as_LRow = Sheets(acs).Cells(Sheets(acs).Rows.Count, "A").End(xlUp).Row 

For as_row = 3 To as_LRow 
    std_number = Sheets(acs).Cells(as_row, 1).Value 

    'Initialise variable containing result to go into column H 
    a = Sheets(acs).Cells(as_row, 6).Value 

    'Process earlier sheets in reverse order 
    '(so that values will be shown in reverse order) 
    For s = acs - 1 To 1 Step -1 
     ilast_row = Sheets(s).Cells(Sheets(s).Rows.Count, "A").End(xlUp).Row 
     For r = 3 To ilast_row 
      std_number_new = Sheets(s).Cells(r, 1).Value 

      If std_number = std_number_new Then 
       'Append value to result string 
       a = a & " + " & Cstr(Sheets(s).Cells(r, 6).Value) 
       Exit For 
      End If 
     Next r 

    Next s 

    'Store result 
    Sheets(acs).Cells(as_row, 8).Value = a 
Next as_row 
+0

고마워, 이걸 확인해 볼게. – Tarik