programing

엑셀에 병합과 같은 기능이 있나요?

firstcheck 2023. 6. 2. 22:23
반응형

엑셀에 병합과 같은 기능이 있나요?

SQL의 병합()과 유사한 동일한 행에 있는 일련의 열(왼쪽에서 오른쪽으로)에서 비어 있지 않은 첫 번째 항목으로 셀을 채워야 합니다.

다음 예제 시트

---------------------------------------
|     |  A   |   B   |   C   |    D   |
---------------------------------------
|  1  |      |   x   |   y   |    z   |
---------------------------------------
|  2  |      |       |   y   |        |
---------------------------------------
|  3  |      |       |       |    z   |
---------------------------------------

나는 행 A의 각 셀에 셀 기능을 넣어 다음과 같은 결과를 얻고 싶습니다.

---------------------------------------
|     |  A   |   B   |   C   |    D   |
---------------------------------------
|  1  |  x   |   x   |   y   |    z   |
---------------------------------------
|  2  |  y   |       |   y   |        |
---------------------------------------
|  3  |  z   |       |       |    z   |
---------------------------------------

다양한 IF 기능을 사용하여 이 작업을 수행할 수 있다는 것을 알고 있지만, 실제 시트에는 선택할 수 있는 열이 30개가 있으므로 더 간단한 방법이 있으면 좋겠습니다.

=INDEX(B2:D2,MATCH(FALSE,ISBLANK(B2:D2),FALSE))

배열 공식입니다.수식을 입력한 후 + +를 눌러 Excel이 배열 수식으로 평가하도록 합니다.지정된 셀 범위의 첫 번째 비어 있지 않은 값을 반환합니다.예제의 경우, 열에 머리글 "a"가 있는 공식이 입력됩니다.

    A   B   C   D
1   x   x   y   z
2   y       y   
3   z           z

사용:

=IF(ISBLANK(A1),B1,A1)

사용할 첫 번째 필드가 비어 있는지 여부를 테스트하고 다른 필드를 사용합니다.필드가 여러 개인 경우 "내포된 경우"를 사용할 수 있습니다.

또는 개별 셀을 비교하려는 경우 VBA에서 병합 함수를 생성할 수 있습니다.

Public Function Coalesce(ParamArray Fields() As Variant) As Variant

    Dim v As Variant

    For Each v In Fields
        If "" & v <> "" Then
            Coalesce = v
            Exit Function
        End If
    Next
    Coalesce = ""

End Function

그리고 엑셀로 불러주세요.예제에서 A1의 공식은 다음과 같습니다.

=Coalesce(B1, C1, D1)

VBA 접근법을 한 단계 더 나아가 개별 셀과 셀 범위를 모두(또는 둘 중 하나) 조합할 수 있도록 다시 작성했습니다.

Public Function Coalesce(ParamArray Cells() As Variant) As Variant

    Dim Cell As Variant
    Dim SubCell As Variant

    For Each Cell In Cells
        If VarType(Cell) > vbArray Then
            For Each SubCell In Cell
                If VarType(SubCell) <> vbEmpty Then
                    Coalesce = SubCell
                    Exit Function
                End If
            Next
        Else
            If VarType(Cell) <> vbEmpty Then
                Coalesce = Cell
                Exit Function
            End If
        End If
    Next
    Coalesce = ""

End Function

이제 Excel에서는 A1의 다음 공식 중 하나를 사용할 수 있습니다.

=Coalesce(B1, C1, D1)
=Coalesce(B1, C1:D1)
=Coalesce(B1:C1, D1)
=Coalesce(B1:D1)

열 간에 중복이 발생하지 않거나 중복이 발생하지 않으려면 이 방법을 사용하여 병합을 해결하는 것이 매우 빠릅니다.아래 공식은 당신의 값과 열에 적용되는 것이 아니라 나의 목업에 적용되므로 당신은 그것을 관련성 있게 조정해야 할 것입니다.

=LEFT(TRIM(CONCATENATE(Q38,R38,S38,T38,U38,V38,W38,X38,Y38)),1)

Excel의 업데이트된 IFS 기능을 사용하면 중첩할 필요가 없습니다.당신은 다음과 같은 것을 시도할 수 있습니다.

  1. 오른쪽에 빈 셀을 만든 다음 입력합니다.
=IFS(ISBLANK(A1),B1,ISBLANK(A1),C1,ISBLANK(A1),D1)

열을 강조 표시하고 필요에 따라 붙여넣습니다.

매우 일반적인 사용 사례인 0에만 병합하려는 경우 다음을 사용할 수 있습니다.SUM()단일 값을 중심으로 함수를 지정합니다.모든 빈칸을 0으로 처리하는 편리함으로, 매우 짧기 때문에 매우 편리합니다.

다른 답변과 같은 일반적인 솔루션이 아니라, 대부분의 경우 원하는 대로 바로 가기를 사용할 수 많은 경우 유용한 바로 가기입니다.

배열 내부에 허용되지 않는 변수를 입력합니다.

Function Coalesce(ParamArray Fields() As Variant) As Variant

    Dim v As Variant

    For Each v In Fields
        If IsError(Application.Match(v, Array("", " ", 0), False)) Then
            Coalesce = v
            Exit Function
        End If
    Next
    Coalesce = ""

End Function

검사할 셀 수에 따라 여러 ISBLANK 검사를 연결할 수 있습니다.

예를 들어, 열 A, B를 확인할 때 C:

=IF(ISBLANK(A1),IF(ISBLANK(B1),C1,B1),A1)

열 A, B, C 및 D의 경우:

=IF(ISBLANK(A1),IF(ISBLANK(B1),IF(ISBLANK(C1),D1,C1),B1),A1)

등등.

파티에 늦고 @Andy를 활용합니다.MC의 답변 다음을 사용하여 조회, 인덱스(match() 등을 평가하여 수식 문을 통합할 수 있습니다.

Public Function Coalesce(ParamArray Fields() As Variant) As Variant

    Dim v As Variant

    For Each v In Fields
        
        If Not IsError(v) Then
            
            Coalesce = v
            
            Exit Function
        End If
    Next
    Coalesce = CVErr(xlErrNA)

End Function

합니다.=Coalesce(INDEX(SHEET1!$A:$AF,MATCH(Main!$Q36,SHEET1!$I:$I,0),MATCH(Main!D$34,SHEET1!$1:$1,0)),INDEX(SHEET2!A:CR,MATCH(Main!$Q36,SHEET2!$M:$M,0),MATCH("SOMETHING",SHEET2!$1:$1,0)))

하지 첫 #N/A실제 일치된 값을 반환합니다.

언급URL : https://stackoverflow.com/questions/20103881/is-there-a-coalesce-like-function-in-excel

반응형