Rusty는 워크 시트의 열에 우편 번호 목록이 있습니다. 그는 일련의 값 범위가 단일 행에 있도록 코드를 “압축”하는 방법을 원합니다. 예를 들어 35013, 35014 및 35015가 3 개의 행을 차지하는 대신 단일 행에 35013-35015로 표시됩니다.

이에 대해 매크로를 사용하거나 사용하지 않는 몇 가지 방법이 있습니다. 펜스의 “매크로가없는”쪽에는 여러 가지 접근 방식이 있으며 모두 중간 결과를 유지하기 위해 추가 열을 사용합니다.

예를 들어, A2 셀에서 시작하여 A 열에 데이터가 있고 A1 셀이 비어 있다고 가정합니다 (헤더 텍스트도 포함되어 있지 않음). 이 경우 B2 셀에 다음 수식을 입력 할 수 있습니다.

=IF(NOT(A2-A1=1),A2,IF(A3-A2=1,B1,A2))

그런 다음 C2 셀에 다음과 같은 긴 수식을 입력합니다.

=IF(NOT(A3-A2=1),IF(A2-A1=1,TEXT(B1,"00000")

&" - "&TEXT(B2,"00000"),TEXT(A2,"00000")),"")

이제 셀 B2 : C2의 수식을 해당 열 아래로 복사 할 수 있습니다. C 열에서 끝나는 것은 압축 된 일련의 우편 번호입니다. 선택하여 붙여 넣기를 사용하여 빈 셀을 무시하는 이러한 값을 원하는 다른 위치로 복사 할 수 있습니다.

매크로 접근 방식을 사용하려는 경우 중간 열이 필요하지 않습니다. 기본적으로 우편 번호 목록을 축소하는 매크로를 작성할 수 있습니다. 다음 매크로는 선택한 셀 범위를 반복하고 압축 된 목록을 만듭니다.

Sub CombineValues()

Dim rng As Range     Dim rCell As Range     Dim sNewArray() As String     Dim x As Long     Dim y As Long     Dim sStart As String     Dim sEnd As String

Set rng = Selection     sStart = rng.Cells(1)

sEnd = sStart     y = 1     For x = 1 To rng.Count - 1         If rng.Cells(x + 1) - _           rng.Cells(x) > 1 Then  'End             ReDim Preserve sNewArray(1 To y)

If sStart = sEnd Then                 sNewArray(y) = sStart             Else                 sNewArray(y) = sStart & "-" & sEnd             End If             sStart = rng.Cells(x + 1)

y = y + 1         End If         sEnd = rng.Cells(x + 1)

ReDim Preserve sNewArray(1 To y)

If sStart = sEnd Then             sNewArray(y) = sStart         Else             sNewArray(y) = sStart & "-" & sEnd          End If     Next     rng.ClearContents     For x = 1 To y         rng.Cells(x) = "'" & sNewArray(x)

Next     Set rng = Nothing     Set rCell = Nothing End Sub

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11977)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.

Excel의 이전 메뉴 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.

link : / excel-Condensing_Sequential_Values_to_a_Single_Row [연속 값을 단일 행으로 압축].