엑셀에 병합과 같은 기능이 있나요?
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 기능을 사용하면 중첩할 필요가 없습니다.당신은 다음과 같은 것을 시도할 수 있습니다.
- 오른쪽에 빈 셀을 만든 다음 입력합니다.
=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
'programing' 카테고리의 다른 글
좋은 .NET 프로파일러는 무엇입니까? (0) | 2023.06.02 |
---|---|
Android에서 토스트를 표시하는 방법은 무엇입니까? (0) | 2023.06.02 |
루비에서 이진 파일을 문자열로 읽기 (0) | 2023.06.02 |
대상 "ResolveWebJobFiles"가 Azure 웹 사이트의 프로젝트에 없습니다. (0) | 2023.06.02 |
MacOS Catalina에서 Git가 작동하지 않음: "xcrun: 오류: 잘못된 활성 개발자 경로(/Library/Developer/CommandLineTools), 누락" (0) | 2023.05.13 |