Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

Microsoft Excel을 사용하다 보면 특정 기준(조건)에 맞는 행을 다른 워크시트로 복사해야 하는 상황이 자주 발생합니다. 이 글에서는 엑셀에서 조건에 따라 한 시트의 행을 다른 시트로 복사할 수 있는 다양한 방법을 소개합니다.

연습용 워크북 다운로드

아래 워크북을 내려받아 직접 실습해 보세요.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

엑셀에서 행을 복사하는 데 활용할 수 있는 여섯 가지 간단하고 유용한 방법을 소개합니다. 작업 목적과 데이터 형태에 맞는 방법을 골라 사용하시면 됩니다. 지금부터 각 방법을 하나씩 자세히 살펴보겠습니다.

1. 엑셀 필터 옵션으로 행 복사하기

이 과정을 설명하기 위해 단가, 무게, 총액 정보를 포함한 과일 데이터 세트를 예로 들겠습니다. 이 표 전체는 워크북의 Filter Op. 시트에 저장되어 있습니다. 필터링복사 기능을 활용해 해당 시트의 행을 Result1 시트로 옮겨 보겠습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

실행 단계:

  • 먼저 데이터 범위를 선택합니다.
  • 리본 메뉴에서 데이터 탭으로 이동합니다.
  • 정렬 및 필터 그룹 아래의 필터 옵션을 클릭합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 행을 복사할 기준이 되는 열을 선택합니다. 여기서는 Fruits(과일) 열을 선택했습니다.
  • 복사할 행에 해당하는 항목을 체크합니다. 예제에서는 Mango(망고)를 선택했습니다. 선택한 항목의 행만 복사되며, 해당 열의 모든 행을 복사하려면 (모두) 옵션을 선택하면 됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 필터링된 전체 데이터를 선택한 후 Ctrl+C로 복사합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 워크시트 하단의 +(플러스) 버튼을 클릭해 새 시트를 만들거나, 단축키 Shift+F11을 사용합니다.
  • 새 워크시트 Result1에서 Ctrl+V로 복사한 데이터를 붙여넣습니다.
  • 이제 선택된 모든 데이터가 Filter Op. 시트에서 Result1 시트로 복사됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

2. 고급 필터 기능으로 행 복제하기

이번에는 고급 필터(Advanced Filter)를 사용해 Sheet3의 행을 Sheet4로 복사해 보겠습니다. 테스트 조건은 총액이 150 초과인 과일입니다. 즉, 총액이 150보다 큰 행만 골라서 다른 시트로 옮기는 것입니다.

실행 단계:

  • 결과를 받을 시트로 이동한 뒤, 데이터 탭에서 고급을 선택합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 다른 위치에 복사(Copy to another location) 옵션을 선택합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 목록 범위(List range) 입력란을 클릭하고 원본 시트로 이동해 전체 데이터 세트를 선택합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 조건 범위(Criteria range) 셀을 지정합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 복사 위치(Copy to) 항목을 선택하면 자동으로 결과 시트로 전환되므로, 해당 워크시트의 원하는 셀을 클릭합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 확인(OK) 버튼을 누릅니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 지정한 조건에 맞는 행들이 원본 시트에서 결과 시트로 복사됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

3. 배열 수식으로 한 시트에서 다른 시트로 행 복사하기

배열 수식을 활용하면 행 복사 과정을 자동화할 수 있습니다. 이번 예제에서는 앞선 데이터 세트에 상점 이름(Shop Names) 열을 하나 추가했습니다. 상점 이름에 따라 행을 분류해 각각의 새 워크시트로 복사할 것이며, 모든 워크시트 이름은 해당 상점 이름과 동일하게 지정합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

목표는 상점 이름에 맞는 행들을 새 워크시트로 복사하는 것입니다.

실행 단계:

  • 먼저 상점 이름과 같은 이름의 새 워크시트를 생성합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 예를 들어 Rooted 시트로 이동한 뒤 셀 B4를 선택하고 아래 수식을 입력한 후 Ctrl+Shift+Enter를 누릅니다. MS Excel 365를 사용 중이라면 Enter 키만 누르면 됩니다.
=IFERROR(INDEX(Sheet7!$A$4:$E$100,SMALL(IF(Sheet7!$F$4:$F$100=$F$3,ROW(Sheet7!$A$4:$B$100)-ROW(Sheet7!$B$4)+1),ROWS(Sheet7!$A$4:$B4)),COLUMN()),"")

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

수식 설명

이 수식에는 여러 엑셀 함수가 사용되었습니다. 배열 수식에 포함된 각 함수를 하나씩 살펴보겠습니다.

ROWS(array)

ROWS 함수는 배열 또는 셀 범위 참조를 인수로 받아, 지정한 범위나 배열에 포함된 행의 개수를 반환합니다.

COLUMN([reference])

COLUMN 함수에 셀 참조를 인수로 전달하면, 해당 셀 참조에 대응하는 열 번호를 구할 수 있습니다.

SMALL(array, n)

SMALL 함수를 사용하면 지정한 배열에서 n번째로 작은 값을 찾을 수 있습니다. 일반적으로 첫 번째 인수에는 데이터 세트 또는 배열의 범위가 들어가고, 두 번째 인수에는 반환하고자 하는 위치 값이 들어갑니다.

INDEX(array, row_num, [column_num])

INDEX 함수도 사용되었습니다. 첫 번째 인수는 필수 항목으로, 원하는 데이터 범위의 배열을 지정합니다. 두 번째 인수는 값을 반환할 행 번호입니다. 마지막 열 번호 인수는 선택 사항으로, 배열에서 특정 열의 값을 반환받고 싶을 때 지정합니다.

IFERROR(value, value_if_error)

IFERROR 함수는 배열 수식에서 가장 바깥쪽에 위치한 조건부 함수입니다. 주어진 값이 오류인지 확인하여, 오류일 경우 두 번째 인수로 지정한 값을 반환합니다.

  • 이후 수식을 아래와 오른쪽으로 드래그해 일치하는 모든 행을 추출합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 다른 워크시트에도 동일한 방식을 적용합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • Array Formula 시트에서 임의의 값을 변경해 보고, 결과 시트의 값이 자동으로 바뀌는지 확인할 수 있습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • Rooted 워크시트로 이동하면 변경 사항이 반영된 것을 볼 수 있습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

4. 여러 함수를 조합하여 행 복제하기

이번에는 다른 워크시트에 결과가 자동으로 표시되도록 하는 방법을 살펴보겠습니다. 앞선 예제와 동일한 데이터 세트를 사용하며, 과일 목록을 상점 이름순으로 정렬하고 총액이 $130 이상인지 확인합니다. 드롭다운 목록에서 상점 이름을 선택하고 Enter 키를 누르면, 조건에 맞는 모든 행이 Functions 시트에서 Result2 시트로 자동 복사됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

실행 단계:

  • 먼저 Functions 시트의 셀 G5를 선택하고 아래 수식을 입력합니다.
=IF(AND(F4=Sheet15!$C$1,E4>=130),MAX(G$1:G2)+1,"-")
  • 키보드의 Enter 키를 누릅니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 채우기 핸들을 아래로 드래그해 수식을 범위 전체에 복제합니다. 또는 플러스(+) 기호를 더블클릭해 자동 채우기를 할 수 있습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 이제 결과를 확인할 수 있습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

수식 설명

여기서는 다양한 엑셀 함수가 사용되었습니다. 각 함수의 세부 내용은 아래와 같습니다.

MAX(number1, [number2], ...)

MAX 함수는 숫자들을 인수로 받아 그중 가장 큰 값을 반환합니다.

AND(logical1, [logical2], ...)

AND 함수는 두 개 이상의 논리 조건을 인수로 받으며, 모든 조건이 충족되면 TRUE를, 그렇지 않으면 FALSE를 반환하는 논리 함수입니다.

IF(logical_condition, [value_if_true], [value_if_false])

IF 함수는 엑셀의 대표적인 조건부 함수로, 논리 조건을 평가하여 조건이 참(True)인지 거짓(False)인지에 따라 서로 다른 값을 반환합니다.

  • 이어서 Result2 시트로 이동해 셀 B7에 아래 수식을 입력합니다.
=IFERROR(INDEX(Sheet14!F:F,MATCH(ROWS($1:1),Sheet14!$G:$G,0))&"","")
  • Enter 키를 누릅니다.

수식 설명

여기서 새로 등장하는 함수는 MATCH 함수입니다.

MATCH(lookup_value, lookup_array, [match_type])

MATCH 함수에서 첫 번째 인수는 검색하려는 조회 값입니다. 두 번째 인수는 조회 값을 검색할 셀 배열 범위이며, 마지막 match_type은 -1, 0, 1 값으로 엑셀이 lookup_value와 lookup_array의 값을 어떤 방식으로 비교할지 정의합니다.

  • 이후 배열을 아래와 오른쪽으로 복사합니다.
  • 이제 아무 상점 이름이나 선택하면, 해당 상점의 과일 중 총액이 $130 초과인 행의 상점 이름과일 이름이 표시됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

5. 엑셀 FILTER 함수로 행 복사하기

FILTER 함수를 사용하면 지정한 기준에 따라 다양한 데이터를 손쉽게 걸러낼 수 있습니다. 아래 절차에 따라 이 함수로 조건에 맞는 행을 다른 시트로 복사해 보겠습니다. FILTER 시트의 데이터를 Result3 시트로 가져오는 것이 목표입니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

실행 단계:

  • 먼저 결과를 표시할 셀을 선택합니다.
  • 해당 셀에 수식을 입력합니다. 이 예제에서는 Result3 시트의 셀 B5입니다.
=FILTER(FILTER!B4:F14,FILTER!F4:F14="Rooted")
  • 키보드의 Enter 키를 누릅니다.
  • 완성입니다! 조건을 충족하는 모든 행이 FILTER 시트에서 Result3 시트로 복사됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

6. 엑셀 VBA로 한 시트에서 다른 시트로 행 복사하기

이번에는 동일한 작업을 VBA를 활용해 수행해 보겠습니다. 명령 버튼을 클릭하면 VBA 시트에서 총액이 150보다 큰 과일 목록을 찾아 Result4 시트로 옮깁니다. 조건에 맞는 행을 복사하는 단계를 살펴보겠습니다.

실행 단계:

  • 먼저 개발 도구(Developer) 탭으로 이동합니다.
  • 삽입(Insert) 옵션에서 ActiveX 컨트롤의 명령 버튼을 선택합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 속성(Properties) 옵션에서 버튼의 캡션과 글꼴을 변경합니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

  • 버튼을 클릭하면 VBA 편집창으로 이동합니다. 아래와 같이 코드를 작성합니다.

코드:

Private Sub CommandButton1_Click()
a = Worksheets("VBA").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
If Worksheets("VBA").Cells(i, 4).Value > 150 Then
Worksheets("VBA").Rows(i).Copy
Worksheets("Result4").Activate
b = Worksheets("Result4").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Result4").Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("VBA").Activate
End If
Next
Application.CutCopyMode = False
ThisWorkbook.Worksheets("VBA").Cells(1, 1).Select
End Sub
  • 이후 RunSub 버튼을 클릭하거나 단축키 F5를 눌러 코드를 실행합니다. 아니면 직접 버튼을 클릭해도 됩니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

VBA 코드 설명

코드의 주요 라인을 설명하면 다음과 같습니다.

  • VBA 시트의 전체 행 개수를 계산하여 변수 a에 저장합니다.
  • IF 조건문으로 각 과일 행의 총액을 확인합니다.
  • 다시 Result4 시트의 행 개수를 계산하여 변수 b에 저장합니다.
  • b값을 증가시켜 가며 일치하는 값을 선택해 붙여넣습니다.
  • 이후 VBA 편집기의 실행(Run) 버튼을 클릭합니다.
  • 마지막으로 Result4 시트로 이동하면 조건에 맞는 행들이 다른 시트로 복사된 것을 확인할 수 있습니다.

엑셀에서 조건에 맞는 행을 다른 시트로 복사하는 6가지 방법

마치며

지금까지 소개한 방법들을 활용하면 엑셀에서 조건에 맞는 행을 한 시트에서 다른 시트로 손쉽게 복사할 수 있습니다. 각 방법을 실제 예제와 함께 설명했습니다. 만약 이 외에 다른 방법을 알고 계시다면 언제든 공유해 주세요.

함께 읽으면 좋은 글

  • 엑셀에서 다른 셀의 텍스트를 표시하는 방법 (4가지)
  • 두 엑셀 시트를 비교하고 차이점을 복사하는 VBA 코드
  • 엑셀에서 VBA로 서식 없이 값만 붙여넣는 방법
  • 엑셀에서 복사·붙여넣기가 되지 않을 때 (원인 9가지 & 해결책)
  • 엑셀에서 매크로로 여러 행을 복사하는 방법 (예제 4가지)