Excel에서 중복 항목을 찾는 방법: 궁극의 단계별 가이드
작성자: Iron Software
엑셀에서 두 열을 병합하는 방법을 알고 있으면 별도의 열에 있는 데이터를 하나의 결과로 결합해야 할 때 시간을 절약할 수 있습니다. 일반적인 예는 성과 이름이 두 열에 저장되어 하나의 전체 이름으로 되어야 하는 경우이지만, 주소, 제품 코드, 날짜 및 정보를 두 셀에 나누어 저장해야 하는 기타 데이터 세트에서도 같은 필요가 발생합니다. 엑셀은 결과가 원본 데이터에 링크된 상태로 유지되는지 또는 고정된 값이 되는지를 포함하여 공백, 빈 셀을 처리하는 방식에 따라 여러 방법으로 열을 결합할 수 있습니다.
시작하기 전에 이해해야 할 중요한 것은 엑셀에는 모든 작업을 수행하는 '열 병합' 버튼이 없다는 것입니다. 홈 탭의 병합 및 가운데 맞춤 버튼은 셀을 시각적으로 병합하지만, 엑셀의 병합 및 가운데 맞춤 버튼은 왼쪽 위 값만 남기고 나머지 원본 데이터를 삭제합니다. 데이터를 잃지 않고 두 열의 데이터를 결합하려면 새 열에 있는 수식이 올바른 접근 방식입니다. 연결 함수, concat 함수, 앰퍼샌드 연산자 및 TEXTJOIN은 모두 이를 위해 설계되었으며 각각 특정 강점을 가지고 있습니다.
이 가이드는 엑셀에서 두 열을 결합하는 모든 방법을 소개합니다: 빠른 결합을 위한 앰퍼샌드 연산자, 호환성을 위한 CONCATENATE 함수, 최신 엑셀을 위한 CONCAT 함수, 빈 셀을 깔끔하게 처리하는 TEXTJOIN, 패턴 기반 채우기를 위한 Flash Fill, 큰 데이터 세트를 위한 Power Query. 또한 병합이 완료된 후 수식을 정적 값으로 변환하여 안전하게 열 A와 열 B를 삭제할 수 있는 방법을 다룹니다. .NET에서 엑셀 파일을 생성하는 개발자는 C#에서 프로그램적으로 IronXL이 열 데이터를 결합하는 방법을 보여주는 마지막 섹션을 발견할 수 있습니다.
방법 1: 앰퍼샌드 연산자를 사용하여 두 열 결합 (가장 빠름)
추천 사용처: 공백 및 구두점에 대한 완전한 제어가 가능한 빠른 두 열 결합.
앰퍼샌드 (&)는 엑셀에서 열을 결합하는 가장 빠른 방법입니다. 엑셀에서 앰퍼샌드 (&) 연산자를 사용하여 두 열을 결합할 수 있으며, =A2 & " " & B2와 같은 수식을 입력합니다. 큰따옴표 안의 공간은 두 값 사이에 구분자을 삽입합니다.
단계:
- 새 열의 첫 번째 셀을 클릭합니다. 예를 들어 원본 데이터가 열 A와 열 B에 있다면 열 C.
- 다음 수식을 입력하십시오: =A2&" "&B2
- 엔터 키를 누릅니다. 첫 번째 셀은 이제 결합된 결과를 보여줍니다. 예를 들어 "James Carter".
- 셀을 다시 클릭하고 채우기 핸들(셀의 오른쪽 하단 모서리에 있는 작은 사각형)을 두 번 클릭하거나 드래그하여 수식을 다음 셀과 아래 모든 행에 적용합니다.
수식은 드래그할 때 자동으로 업데이트되며 각 행에 맞게 행 참조를 조정합니다. 쉼표와 공백을 추가하려면 =A2&", "&B2를 사용하십시오. 구분자 없이 결합하려면 큰따옴표 내용을 제거하십시오: =A2&B2.

드래그 대신 채우기 핸들을 두 번 클릭합니다. 엑셀은 인접한 열의 마지막 데이터 행까지 자동으로 채워, 큰 데이터 세트에서 시간을 절약합니다.
방법 2: CONCATENATE 함수 사용
추천 사용처: 구버전 엑셀 사용이거나 앰퍼샌드 약식보다 명시적 함수를 선호하는 사용자.
CONCATENATE 함수는 엑셀에서 두 개 이상의 셀의 텍스트를 병합하는 전통적인 방법이지만 새로운 버전의 엑셀에서는 더 많은 유연성을 제공하는 CONCAT 함수로 대체되었습니다. 그럼에도 불구하고 모든 엑셀 버전에서 작동하며 앰퍼샌드 접근법과 동일한 결과를 낳습니다.
CONCATENATE 함수를 사용하여 엑셀에서 열을 병합할 수 있으며, 예를 들어 =CONCATENATE(A2, " ", B2)는 두 셀의 텍스트를 사이에 공간을 두고 결합합니다.
단계:
- 새로운 병합된 열의 첫 번째 셀을 클릭합니다.
- 다음 수식을 입력하십시오: =CONCATENATE(A2," ",B2)
- 엔터 키를 눌러 확인합니다.
- 드래그하거나 채우기 핸들을 두 번 클릭하여 모든 행 아래로 채웁니다.
다른 셀에서 더 많은 값을 추가하려면 인수를 확장하십시오: =CONCATENATE(A2," ",B2," ",C2)는 세 열의 데이터를 병합합니다.

방법 3: CONCAT 함수 사용 (최신 엑셀)
추천 사용처: 엑셀 2019, Microsoft 365, CONCATENATE의 더 깔끔한 대체품을 원하는 사용자.
엑셀의 CONCAT 함수는 사용자가 여러 셀의 텍스트를 하나의 셀로 결합할 수 있게 하며, 쉼표를 사용하여 셀을 구분하고 큰따옴표를 사용하여 공백 또는 다른 텍스트를 추가할 수 있습니다. CONCATENATE와 정확히 동일하게 작동하지만 CONCATENATE가 할 수 없는 범위도 수용합니다.
단계:
- 새로운 단일 열의 첫 번째 셀을 클릭합니다.
- 다음을 입력하십시오: =CONCAT(A2," ",B2)
- 엔터 키를 누르고 채우기 핸들을 통해 전체 열 아래로 드래그합니다.
전체 셀 범위를 한 번에 결합하려면 범위를 인수로 전달하십시오: =CONCAT(A2:C2)는 구분자 없이 세 셀 모두를 결합합니다. 범위 내 각 값 사이에 구분자가 필요한 경우에는 TEXTJOIN이 더 좋은 옵션입니다(다음에서 다룬 바 있음).

현대 엑셀의 모든 버전에서도 CONCATENATE 함수가 역호환성을 위해 여전히 작동하지만, 새로운 수식을 작성할 때 CONCAT이 현재 추천입니다. 둘 다 두 열을 결합할 때 동일한 결과를 제공합니다.
방법 4: TEXTJOIN을 사용하여 빈 셀 건너뛰기
추천 사용처: 열의 일부 셀이 비어 있고 결과에 후행 공백이나 구분자가 원치 않을 경우.
TEXTJOIN 함수는 사용자가 빈 셀을 무시할 수도 있는 옵션을 두고 여러 셀의 텍스트를 병합할 수 있게 하는 Excel의 강력한 도구로, 데이터 병합 시 깔끔한 결과를 내는 데 이상적입니다. 2016년 이후 버전의 엑셀에서 사용할 수 있는 TEXTJOIN 함수는 사용자가 빈 셀을 무시하면서 열을 결합할 수 있도록 하며, 예를 들어 =TEXTJOIN(" ", TRUE, A2, B2)와 같은 수식을 사용합니다.
두 번째 인수(TRUE)가 빈 셀 건너뛰기 동작을 제어합니다. TRUE로 설정되면 인수 목록에서 빈 셀이 건너뛰어지며, 그 자리에 추가 구분자가 추가되지 않습니다.
단계:
- 새로운 병합된 열의 첫 번째 셀을 클릭합니다.
- 다음을 입력하십시오: =TEXTJOIN(" ",TRUE,A2,B2)
- 엔터를 누르고 아래로 채웁니다.
주소 병합 데모 파일에서 Suite 열이 비어 있는 행이 이 점을 명확하게 보여줍니다. 빈 단위 열이 있는 행에 앰퍼샌드 연산자를 사용하면 후행 쉼표와 공백이 있는 "890 Maple Avenue, "이 생성됩니다. TEXTJOIN의 TRUE는 후행 문자 없이 "890 Maple Avenue"을 깔끔하게 반환합니다.
두 개 이상의 열을 결합하려면 추가 인수로 더 많은 셀 참조를 추가하십시오: =TEXTJOIN(" ",TRUE,A2,B2,C2)는 여러 열을 동시에 병합하며 비어 있는 경우엔 건너뜁니다.
방법 5: 수식 없이 열을 결합하기 위한Flash Fill사용
추천 사용처: 수식 없이 결과를 원할 때 일회성 병합.
Flash Fill은 패턴을 감지하고 수식을 사용하지 않고 데이터를 자동으로 채웁니다. 출처 구조가 명확하고 일관된 경우 두 열을 결합하는 가장 빠른 방법 중 하나입니다.
단계:
- 새로운 열의 첫 번째 셀(예: C2)에서 원하는 방식대로 정확한 결합 결과를 수동으로 입력합니다. 이름과 성의 경우: "James Carter"를 입력합니다.
- 엔터 키를 눌러 다음 셀로 이동합니다.
- Ctrl + E(Flash Fill 단축키)를 누릅니다. 엑셀은 첫 번째 셀의 패턴을 분석하여 열의 나머지를 자동으로 채웁니다.
또는 홈 탭에서 채우기 버튼을 클릭한 후 편집 그룹에서 Flash Fill을 드롭다운 메뉴에서 선택할 수 있습니다. 데이터 > Flash Fill을 통해서도 액세스할 수 있습니다.
Flash Fill은 수식이 아닌 정적 값을 생성하므로 열 A나 열 B의 원본 데이터가 변경되어도 결과는 자동으로 업데이트되지 않습니다. 따라서 지속적인 업데이트가 이루어지지 않는 일회성 작업에 적합하지만, 데이터가 정기적으로 업데이트되는 라이브 스프레드시트에는 적합하지 않습니다.
Ctrl+E를 누른 후 Flash Fill이 작동하지 않으면 패턴 셀이 비어 있는 셀 없이 출처 열 옆에 바로 위치했는지 확인하세요. 파일 > 옵션 > 고급 > 자동 Flash Fill이 활성화되어 있는지도 확인하십시오.
방법 6: Power Query를 사용하여 열 병합
추천 사용처: 큰 데이터 세트, 반복적인 데이터 가져오기, 새로운 데이터에서 같은 병합을 다시 실행해야 하는 상황.
Power Query는 큰 반복적인 데이터 세트에서 열 병합을 효과적으로 수행할 수 있습니다. 이는 결합 작업을 소스 데이터가 변경될 때 수식을 수동으로 다시 작성하지 않고 다시 적용할 수 있는 변환 단계로 처리합니다.
단계:
- 데이터 테이블 내부 아무 곳이나 클릭하세요.
- 데이터 탭으로 이동하여 데이터 가져오기 > 테이블/범위에서 (또는 일부 버전에서는 시트에서)을 클릭합니다.Power Query편집기가 열립니다.
- Ctrl 키를 누르고 두 열 헤더(예: 이름과 성)를 클릭하여 선택합니다.
- 선택한 열 헤더 중 하나를 마우스 오른쪽 버튼으로 클릭하고 열 병합을 선택합니다.
- 대화 상자에서 구분자를 선택하고(공백, 쉼표, 탭 또는 사용자 지정) 새 병합 열에 "전체 이름"과 같은 이름을 부여합니다.
- 확인을 클릭합니다. Power Query가 두 원본 열을 대체하는 새 병합 열을 만듭니다.
- 닫기 및 로드를 클릭하여 결과를 새로운 테이블로 워크시트에 반환합니다.
병합된 결과가 새로운 엑셀 테이블에 로드됩니다. 소스 데이터가 업데이트되면 데이터 탭의 새로 고침을 클릭하여 자동으로 병합이 다시 실행됩니다.

병합이 반복되는 프로세스의 일부일 때 Power Query가 적합한 도구입니다. 수백 행만 있는 두 열을 간단히 결합할 때는 수식이 더 빠르게 설정됩니다.
수식을 정적 값으로 변환하고 원본 열 삭제하는 방법
모든 수식 방법(앰퍼샌드, CONCATENATE, CONCAT, TEXTJOIN)을 사용한 후 새로운 병합된 열은 원본 열을 참조하는 수식을 포함합니다. 열 A 또는 열 B를 삭제하면 수식이 깨집니다. 수식 결과를 최종적으로 정적 데이터로 확정하려면 새 열을 복사하여 값으로 붙여넣습니다.
단계:
- 새로운 병합된 열의 모든 셀을 선택합니다(예: C2:C20).
- Ctrl + C를 눌러 복사합니다.
- 동일한 열의 첫 번째 셀을 마우스 오른쪽 버튼으로 클릭하고 드롭다운 메뉴에서 특수 붙여넣기를 선택합니다.
- 값을 선택합니다 (또는 V를 누른 후 Enter를 누르십시오). 수식이 정적 값으로 대체됩니다. 특수 붙여넣기 옵션은 수식을 원본 데이터를 더 이상 참조하지 않는 고정 텍스트로 변환합니다.
- 이제 열 A와 열 B를 선택합니다(Ctrl 키를 누르고 각 열 문자를 클릭하여 둘 다 선택).
- 마우스 오른쪽 버튼을 클릭하고 삭제를 선택합니다. 병합된 열에는 이제 정적 값만 포함되어 있으므로 원본 열을 삭제해도 오류가 없습니다. 이 단계는 원본 열의 데이터를 삭제하지만 새로운 열의 병합 데이터는 유지됩니다.
이 과정이 완료되면 단일 열에는 전체 이름(또는 다른 결합된 결과)이 일반 텍스트로 포함됩니다. 원본 열은 삭제되고 새로운 병합된 열은 독립적으로 남아 있습니다.

일반적인 문제 및 문제 해결
병합된 결과가 텍스트 대신 숫자를 표시합니다
이는 원본 셀 중 하나가 숫자 대신 텍스트로 형식화된 숫자를 포함할 때 발생합니다. 대부분의 경우 concatenate 함수와 앰퍼샌드는 숫자를 자동으로 텍스트로 변환하지만 결과가 잘못된 것처럼 보일 경우, NUMBER()로 강제로 형식을 바꾸세요: =A2&TEXT(B2,"0") 또는 날짜인 경우 =A2&TEXT(B2,"DD-MMM-YYYY")
병합된 결과의 끝에 여분의 공백이나 쉼표가 있습니다
이는 빈 셀 문제입니다. 원본 열의 셀이 비어 있을 때 앰퍼샌드 수식은 여전히 구분자를 추가합니다. 자동으로 빈 칸을 건너뛰려면 TRUE가 두 번째 인수로 있는 =TEXTJOIN(" ",TRUE,A2,B2)로 전환하십시오.
Flash Fill이 전체 열 대신 한두 행만 채웁니다
이것은 일반적으로 원본 데이터에 대소문자가 혼합되거나 여분의 공백이 있거나 두 값이 다른 순서로 배열된 행과 같은 불일치가 있을 때 발생합니다. TRIM 함수를 사용하여 원본 열에서 여분의 공백을 확인하고 패턴이 첫 번째 행에서 일관된지 확인하세요.
원본 열 삭제가 병합된 열을 깨트립니다
병합된 열에는 여전히 원본 데이터를 참조하는 수식이 포함되어 있습니다. 원본 열을 삭제하기 전에 특수 붙여넣기 값 단계를 따르십시오. 병합된 열에 정적 값만 포함되면 열 A와 열 B를 삭제해도 안전합니다.
CONCATENATE 또는 CONCAT 수식이 결과 대신 수식 텍스트를 표시합니다
셀은 텍스트로 형식화되어 있습니다. 셀을 클릭하고 홈 탭의 숫자 형식 드롭다운에서 셀 형식을 일반으로 변경한 후 F2와 Enter를 눌러 수식을 다시 평가합니다.
간편 참조: 엑셀에서 두 열 병합 방법
| 방법 | 수식 예제 | 자동으로 업데이트됨 | 빈 셀 처리 |
|---|---|---|---|
| 앰퍼샌드 연산자 | =A2&" "&B2 | 예 | 아니요 (후행 구분자) |
| CONCATENATE 함수 | =CONCATENATE(A2," ",B2) | 예 | 아니요 (후행 구분자) |
| CONCAT 함수 | =CONCAT(A2," ",B2) | 예 | 아니요 (후행 구분자) |
| TEXTJOIN 함수 | =TEXTJOIN(" ",TRUE,A2,B2) | 예 | 예 (빈칸 건너뜀) |
| Flash Fill | Ctrl + E (수식 없음) | 아니요 | 예 (패턴에 따라) |
| Power Query | 열 병합 단계 | 새로고침 시 | 구성 가능 |
| 값으로 붙여넣기 | Ctrl+C, 특수 붙여넣기 > 값 | 아니요 (정적 값으로 변환) | 해당 없음 |
개발자를 위한: 프로그래밍적으로 IronXL로 열 데이터 결합
.NET 애플리케이션이 열을 병합해야 하는 엑셀 보고서를 생성할 때 IronXL을 사용하면 서버에 Microsoft Office가 설치되지 않아도 C#에서 셀 값을 읽고 결합하고 쓸 수 있습니다. 셀에 CONCAT 수식을 작성하는 대신 IronXL은 원본 값을 읽고 결합된 결과를 정적 값으로 직접 기록합니다. 이는 출력 파일에 수식 종속성이 남지 않는다는 것을 의미합니다.
직원 스프레드시트를 로드하고 이름과 성 열을 새로운 전체 이름 열로 결합한 다음 원본 열을 삭제하는 완전한 예제가 있습니다:
using IronXL;
WorkBook workBook = WorkBook.Load("employee-list.xlsx");
WorkSheet ws = workBook.DefaultWorkSheet;
// Find how many rows of data exist (starting from row 2, row 1 is the header)
int lastRow = ws.Rows.Count();
// Insert a new column C for the merged result
ws.InsertColumn(2); // inserts before existing column C, shifting data right
ws["C1"].Value = "Full Name";
// Combine first name (col A) and last name (col B) for each row
for (int row = 2; row <= lastRow; row++)
{
string firstName = ws[$"A{row}"].StringValue;
string lastName = ws[$"B{row}"].StringValue;
// Combine data with a space separator - same result as =A2&" "&B2 in Excel
ws[$"C{row}"].Value = $"{firstName} {lastName}".Trim();
}
// Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("employee-list.xlsx");
WorkSheet ws = workBook.DefaultWorkSheet;
// Find how many rows of data exist (starting from row 2, row 1 is the header)
int lastRow = ws.Rows.Count();
// Insert a new column C for the merged result
ws.InsertColumn(2); // inserts before existing column C, shifting data right
ws["C1"].Value = "Full Name";
// Combine first name (col A) and last name (col B) for each row
for (int row = 2; row <= lastRow; row++)
{
string firstName = ws[$"A{row}"].StringValue;
string lastName = ws[$"B{row}"].StringValue;
// Combine data with a space separator - same result as =A2&" "&B2 in Excel
ws[$"C{row}"].Value = $"{firstName} {lastName}".Trim();
}
// Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("employee-list.xlsx")
Dim ws As WorkSheet = workBook.DefaultWorkSheet
' Find how many rows of data exist (starting from row 2, row 1 is the header)
Dim lastRow As Integer = ws.Rows.Count()
' Insert a new column C for the merged result
ws.InsertColumn(2) ' inserts before existing column C, shifting data right
ws("C1").Value = "Full Name"
' Combine first name (col A) and last name (col B) for each row
For row As Integer = 2 To lastRow
Dim firstName As String = ws($"A{row}").StringValue
Dim lastName As String = ws($"B{row}").StringValue
' Combine data with a space separator - same result as =A2&" "&B2 in Excel
ws($"C{row}").Value = $"{firstName} {lastName}".Trim()
Next
' Save the workbook with the new merged column
workBook.SaveAs("employee-list-merged.xlsx")
코드에서 TEXTJOIN 빈칸 건너뛰기 동작을 복제하려면 결합 전에 확인을 추가하십시오:
// Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
string combined = string.Join(" ",
new[] { firstName, lastName }
.Where(s => !string.IsNullOrWhiteSpace(s)));
ws[$"C{row}"].Value = combined;
// Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
string combined = string.Join(" ",
new[] { firstName, lastName }
.Where(s => !string.IsNullOrWhiteSpace(s)));
ws[$"C{row}"].Value = combined;
Imports System.Linq
' Skip blank cells when combining - equivalent to TEXTJOIN(" ", TRUE, A2, B2)
Dim combined As String = String.Join(" ",
New String() {firstName, lastName} _
.Where(Function(s) Not String.IsNullOrWhiteSpace(s)))
ws($"C{row}").Value = combined
IronXL는 또한 시각적으로 헤더 형식을 위한 행 간의 셀을 병합하는 Merge() 메서드를 지원하며 이는 열 데이터 결합과 별도입니다. 자세한 내용은 셀 병합 가이드와 엑셀 파일 연결 튜토리얼을 참조하십시오.
시작: NuGet에서 Install-Package IronXL.Excel로 설치하세요. 무료 체험은 30일 동안의 전체 기능과 신용 카드가 필요 없는 상태로 제공됩니다.
추가 읽기:
마무리
엑셀에서 두 열을 병합하는 모든 방법은 서로 다른 트레이드 오프와 함께 제공됩니다. 소스 셀이 모두 값을 포함할 때는 앰퍼샌드 연산자가 두 열 작업을 병합하는 가장 빠른 수식입니다. 텍스트 연산자에서 빈 칸 처리 인수가 결과에 후행 구분자가 나타나지 않게 해주기 때문에 빈 셀이 데이터에서 존재할 때에는 TEXTJOIN이 더 좋은 선택입니다. CONCAT은 현대 엑셀에서 현재 표준이지만 CONCATENATE는 여전히 완벽하게 지원되며 CONCAT와 동일한 출력을 산출합니다. Flash Fill은 수식 없이 결과를 원할 때 패턴 인식을 통해 두 단계 만에 제공되는 답입니다.
병합된 데이터가 새로운 병합 열에 있으면 항상 열 A와 열 B를 삭제하기 전에 특수 붙여넣기로 값을 붙여넣으세요. 먼저 수식을 정적 값으로 변환하면 새로운 단일 열이 독립적으로 남아 있는 유일한 결과로 안전하게 보관할 수 있습니다. 매번 새 데이터가 도착할 때 같은 병합이 실행되는 대용량 데이터 세트에 대한 반복 워크플로우에서는 새로 고침 버튼으로 결합을 처리하며 수식을 다시 작성할 필요가 없습니다.
.NET에서 애플리케이션 생성 워크북에서 이 프로세스를 자동화해야 하는 개발자는 IronXL을 사용하여 각 행을 읽고 코드에서 값을 결합한 후 수식 종속성 없이 병합된 데이터를 다시 쓸 수 있습니다. 자신의 환경에서 테스트하기 위해 무료 체험으로 시작하세요.




