Excel - 여러 장을 정렬하는 매크로

발행물

나는 11 장의 시트를 가지고있다. 10 장은 sheet1에서 정보를 가져와야합니다.

이것은 취사 서비스에서 요리사를위한 것입니다.

각 열의 정보를 구별하기 위해 A 열에 핵심 단어가 있습니다.

내가 필요한 건 ...

  • 시트 2와 3은 열 A의 단어가 "뜨거울 때"sheet1에서 전체 라인을 가져옵니다.
  • A 열의 단어가 "차가운"경우 시트 4와 5가 시트 1에서 전체 라인을 가져옵니다.
  • A 열의 단어가 "Bulk"이면 시트 6에서 시트 1의 전체 줄을 가져옵니다.
  • A 열의 단어가 "Pastry"이면 시트 1에서 전체 라인을 가져 오려면 시트 8 & 9
  • 열 A의 단어가 "사전"이면 시트 10에서 전체 시트를 시트 1에서 가져옵니다.

다른 시트는 이미 덮여 있습니다.

세 개의 열을 기준으로 시트를 정렬하는 매크로를 만들었습니다. 시트에 정보가 추가 될 때마다이 매크로가 자동으로 실행되면 좋을 것입니다. 특정 줄이 아니라 시트의 모든 영역에 정보를 순서대로 보관합니다.

해결책

이 매크로를 사용해보십시오 :

 옵션 Explicit Private Sub Worksheet_Change (ByVal 대상 범위로) Dim nxtRow As Integer '변경 내용이 Column H인지 확인 (8) If Target.Column = 8 Then'셀이 예열인지 확인하십시오. Target.Value = "H" '예'이면 시트 2의 다음 빈 행을 찾습니다. nxtRow = 시트 (2) .Range ( "G"및 Rows.Count). 끝 (xlUp) .Row + 1 '변경된 행을 복사하여 시트 2에 붙여 넣습니다. Target.EntireRow .Copy _ Destination : = Sheets (2) .Range ( "A"& nxtRow) '예이면 시트 3에서 다음 빈 행을 찾습니다. nxtRow = Sheets (3) .Range ( "G"& Rows.Count) .End xlUp) .Row + 1 '변경된 행을 복사하여 시트 3에 붙여 넣기 Target.EntireRow.Copy _ Destination : = Sheets (3) .Range ( "A"& nxtRow) End If End If'변경 사항이 Column H인지 결정 8) If Target.Column = 8 Then If 셀 = 콜드인지 확인하십시오. Target.Value = "C"Then '예이면 시트 4에서 다음 빈 행을 찾습니다. nxtRow = Sheets (4) .Range ( "G" & Rows.Count) .End (xlUp) .Row + 1 '변경된 행을 복사하여 시트 4에 붙여 넣기 Target.EntireRow.Copy _ Destination : = Sheets (4) .Range ( "A"& nxtRow) nxtRow = Sheets (5) .Range ( "G"및 Rows.Count) .End (xlUp) .Row + 1 '변경된 행을 복사하여 Sheet 3에 붙여 넣기 Target.EntireRow.Copy _ Destination : = End If End If '변경 사항이 Column H인지 확인 (8) If Target.Column = 8 그런 다음'예인 경우 셀 = 프레젠테이션인지 확인 Target.Value = "이면 시트 (5) .Range ("A "& nxtRow) End If End If ' P "Then '이면 시트 8의 다음 빈 행을 찾습니다. nxtRow = Sheets (8) .Range ("G "및 Rows.Count) .End (xlUp) .Row + 1'변경된 행을 복사하여 Sheet 8에 붙여 넣습니다. 대상 .Copy _ Destination : = Sheets (8) .Range ( "A"& nxtRow) End If End If '변경 사항이 Column H인지 확인 (8) If Target.Column = 8 Then' = Pastry 경우 Target.Value = "PY"Then '예이면 시트 10에서 다음 빈 행을 찾습니다. nxtRow = Sheets (10) .Range ( "G"및 Rows.Count) .End (xlUp) .Row + 1'Copy (10) .Range ( "A"& nxtRow) '예이면 시트 12에서 다음 빈 행을 찾습니다. nxtRow = Sheets (11) .Range ( " G & Rows.Count). 끝. (XlUp) .Row + 1 '변경된 행을 복사하여 시트 12에 붙여 넣기 Target.EntireRow.Copy _ Destination : = Sheets (11) .Range ( "A"& nxtRow) End If End If'변경 사항이 Column H (8) If Target.Column = 8 그렇다면 '셀이 대량인지 확인하십시오. Target.Value = "B"Then'예이면 시트 6에서 다음 빈 행을 찾습니다. nxtRow = Sheets (6) .Range ( "G "& Rows.Count) .End (xlUp) .Row + 1 '변경된 행을 복사하여 시트 6에 붙여 넣기 Target.EntireRow.Copy _ Destination : = Sheets (6) .Range ("A "& nxtRow) End If End If End Sub 

이 팁을 주신 Jlee1978에게 감사드립니다.

이전 기사 다음 기사

톱 팁