Feroz는 A 열에 일련의 텍스트 값이 있습니다. 이러한 값은 각 셀에서 두 가지 다른 글꼴 색상으로 서식이 지정됩니다. (텍스트의 첫 번째 부분은 하나의 색상이고 두 번째 부분은 다른 색상입니다.) 그는 이러한 텍스트 값을 B 열과 C 열로 분할하여 첫 번째 색상이있는 항목은 B 열에 있고 두 번째 색상이있는 항목은 C 열에서 그는 Text to Columns 도구가 이것을 처리하지 않을 것이라는 점에 주목하고 있습니다. 그래서 그가 할 수 있는지 궁금합니다.

예, 할 수 있습니다. 한 가지 방법은 Excel의 기본 제공 빠른 채우기 기능을 사용하는 것입니다. (이 도구는 Excel 2013 이상 버전에서만 사용할 수 있습니다.) 다음과 같은 데이터로 시작한다고 가정 해 보겠습니다.

(그림 1 참조)

image

그림 1. 여러 색상의 데이터.

내 테스트 데이터에는 E 열에 A 열 데이터의 몇 가지 특성이 포함되어 있습니다.이 시점에서해야 할 일은 Flash Fill이 작동 할 수있는 무언가를 제공하는 것입니다. 다음과 같이 2 행과 3 행의 텍스트를 수동으로 분리하여이를 수행합니다. (그림 2 참조)

image

그림 2. 예제 설정.

B2 : C3에서 만든 예제는 정확한 것이 중요합니다. 모든 색 (선행 또는 후행 공백 포함)을 포함해야하며 철자와 대소 문자가 모두 정확해야합니다.

이제 셀 B4를 선택하고 Ctrl + E를 누릅니다. 이렇게하면 Flash Fill이 작동하게되고 B 열의 나머지 부분에 텍스트가 표시됩니다. C 열에서도 동일한 작업을 수행합니다. C4 셀을 선택하고 Ctrl + E를 누릅니다. 결과는 다음과 유사해야합니다. (그림 3 참조)

image

그림 3. 플래시를 사용한 후 두 열을 모두 채 웁니다.

Flash Fill의 성공 여부는 대부분 A 열의 데이터 특성에 달려 있습니다. 대부분의 경우 작업의 대부분을 수행하고 작업을 엄청나게 완료 할 수 있습니다. Flash Fill이 데이터를 분리하는 방법을 식별 할 수없는 이상한 경우가있을 수 있습니다. A7, A9 및 A11 셀이 올바르게 분리되지 않은 이전 그림에서이를 확인할 수 있습니다. 결과가 의미가 있는지주의 깊게 확인해야합니다.

빠른 채우기가 작동하지 않는 경우 매크로를 만들어 작업을 수행 할 수 있습니다. A 열의 모든 셀에서 작동하는 매크로를 생각해 내고 텍스트를 B 열과 C 열 (Feroz가 필요로하는 것처럼)으로 가져올 수 있지만, 무엇이든 반환하는 사용자 정의 함수를 만드는 것이 더 유연합니다. 세포에서 원합니다. 다음은 예입니다.

Function SplitColors(r As Range, Optional iWanted As Integer = 1) _   As String     Dim sTemp As String     Dim J As Integer     Dim K As Integer     Dim iColors(9) As Integer

sTemp = ""

If r.Cells.Count = 1 Then         For J = 1 To 9             iColors(J) = 0         Next J

' Determine where colors change         ' Remember there will always be at least one color         K = 1         iColors(K) = 1         For J = 2 To Len(r.Text)

If r.Characters(J,1).Font.Color <> _               r.Characters(J-1,1).Font.Color Then                 K = K + 1                 iColors(K) = J             End If         Next J

' Check if wanted color is less than total colors         If iWanted <= K Then             J = iColors(iWanted + 1)

If J = 0 Then J = Len(r.Text) + 1             J = J - iColors(iWanted)

sTemp = Mid(r.Text, iColors(iWanted), J)

End If     End If     SplitColors = sTemp End Function

SplitColors 함수에는 하나의 매개 변수 (작동 할 범위)가 필요합니다

두 번째 선택적 매개 변수 (원하는 범위의 색상).

이 함수는 먼저 단일 셀이 전달되었는지 확인합니다. 그렇다면 해당 셀의 색상 수와 색상이 변경되는 문자 번호를 결정합니다. 그런 다음 원하는 색상 (선택 사항 인 두 번째 매개 변수에서 전달됨)이 셀의 색상 수보다 적 으면 해당 색상을 사용하는 문자가 반환됩니다.

따라서 예를 들어 A2 셀의 첫 번째 색을 사용하여 셀을 반환하려면 워크 시트에서 다음 중 하나를 사용할 수 있습니다.

=SplitColors(A2, 1)

=SplitColors(A2)

두 번째 매개 변수가 선택 사항이므로 두 번째 호출이 작동합니다. 포함하지 않으면 함수는 첫 번째 색상으로 작업하려고한다고 가정합니다. 셀의 두 번째 색상을 사용하여 텍스트를 반환하려면 다음이 작동합니다.

=SplitColors(A2, 2)

SplitColors 기능은 체크 아웃중인 셀에서 최대 9 가지 색상으로 작동합니다. 두 번째 매개 변수를 9 이상으로 지정하면 오류가 발생합니다.

_ 참고 : _

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

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

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

이 팁 (13605)은 Office 365의 Microsoft Excel 2013, 2016, 2019 및 Excel에 적용됩니다.