순차 값을 단일 행으로 압축 (Microsoft Excel)
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 교육을위한 소스입니다.
이 팁 (3853)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.
link : / excelribbon-Condensing_Sequential_Values_to_a_Single_Row [연속 값을 단일 행으로 압축]
.