VBA로 TEXTJOIN 함수 구현

VBA
작성자
루s cos 개인대행
작성일
2023-09-03 01:14
조회
319
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

질문 요약 : TEXTJOIN을 VBA로 구현할 때 범위가 아닌 컴마로할 때, 범위로 할 때 모두 작동하게 하려면 어떻게 해야하나요?

안녕하세요!

이미 오빠두 사이트에 TEXTJOIN가 추가기능으로 있는 것을 알고 있지만

공부할겸 혼자 뚜까뚜까 하면서 만들어보고 싶어서 얼추.. 만들어보았으나

한 부분에서 막혀서 어떻게 해야할지 모르겠네용 ㅠㅠㅠ

선배님들의 조언이 필요합니다!

 

===

 

질문은 아래와 같습니다!

 

=TEXTJOIN_test(" / ",TRUE,A1:A10)

위와 같은 식으로 하면 정상적으로 작동을 하지만

 

=TEXTJOIN_test(" / ",TRUE,A1,A10)

=TEXTJOIN_test(" / ",TRUE,"오빠두","엑셀")

이런식으로 범위가 아닌 ,로 구분하여 입력하면 VALUE 에러가 뜨는 상태입니다.

 

아마 인수에 대한 변수 선언을 RANGE로 해서 그런거 같은데

해당 부분을 어떻게 해야지 텍스트도 가능하고 RANGE도 가능한지 모르겠네용 ㅠㅠ..

 

===

 

제가 만든 코드는 아래와 같습니다!

 

Function TEXTJOIN_test(delimiter As String, ignore_blanks As Boolean, text_range As Range) As String

Application.Volatile

Dim text As Range
Dim text_num As Long

 

 

text_num = 0

 

 

For Each text In text_range

 

 

If ignore_blanks = True Then '공백 무시할 때 진행

If VBA.IsEmpty(text.Value) = False Then

If text_num = 0 Then

TEXTJOIN_test = text.Value

Else

TEXTJOIN_test = TEXTJOIN_test & delimiter & text.Value

End If

text_num = text_num + 1

End If

 

 

ElseIf ignore_blanks = False Then '공백 감안할 때 진행

If text_num = 0 Then

TEXTJOIN_test = text.Value

Else

TEXTJOIN_test = TEXTJOIN_test & delimiter & text.Value

End If

text_num = text_num + 1

End If

 

 

Next

End Function

신고
스크랩
공유
전체 1

  • 2023-09-03 02:48

    @루s cos 개인대행 님 참고하세요

    가변인자 사용예에 대한 것입니다

    Function 합계(ParamArray 변수들() As Variant) As Double
        Dim 인자 As Variant
        Dim 합 As Double
        합 = 0
        
        For Each 인자 In 변수들
            If IsArray(인자) Then ' 매개변수가 배열인 경우
                Dim i As Long
                For i = LBound(인자) To UBound(인자)
                    합 = 합 + 인자(i)
                Next i
            ElseIf TypeOf 인자 Is Range Then ' 매개변수가 엑셀 영역인 경우
                Dim 영역 As Range
                Set 영역 = 인자
                Dim 셀 As Range
                For Each 셀 In 영역
                    합 = 합 + 셀.Value
                Next 셀
            Else ' 매개변수가 일반 값인 경우
                합 = 합 + 인자
            End If
        Next 인자
        
        합계 = 합
    End Function
    
    
    Sub 호출()
        Dim 값1 As Double
        Dim 값2 As Double
        Dim 값3 As Double
        Dim 배열() As Variant
        Dim 영역 As Range
    
        값1 = 10
        값2 = 20
        값3 = 30
        배열 = Array(40, 50, 60)
        Set 영역 = Range("A1:A3")
    
        Debug.Print 합계(값1, 값2, 값3) ' 결과: 60
        Debug.Print 합계(배열) ' 결과: 150
        Debug.Print 합계(영역) ' 결과: 6 ' A1, A2, A3의 합
    End Sub
    

     


전체 12,722
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (219)
오빠두엑셀 | 2022.02.03 | 추천 501 | 조회 234152
오빠두엑셀 2022.02.03 501 234152
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 272 | 조회 14801
오빠두엑셀 2021.10.28 272 14801
61746 VBA
New 초기화 방법 엑셀파일 (2)
내일은 내일 | 14:03 | 추천 0 | 조회 21
내일은 내일 14:03 - 21
61745 피벗테이블
New 피벗테이블 오류 첨부파일
정태진 | 13:36 | 추천 0 | 조회 21
정태진 13:36 - 21
61741 함수/공식
New 호봉테이블 엑셀파일 (1)
미공개 | 12:20 | 추천 0 | 조회 26
미공개 12:20 - 26
61738 함수/공식
New 변동하는 금액에 맞추어 아이템, 수량을 자동으로 데이타시트에서 불러올 수 있을까요? 엑셀파일첨부파일 (1)
Jinu | 09:51 | 추천 0 | 조회 33
Jinu 09:51 - 33
61736 VBA
New 조건을 찾아서 다른시트에서 값을 불러오는 메크로를 넣어둔 파일인데 제대로 작동을 안합니다.. 엑셀파일 (2) 답변완료
향기 | 08:35 | 추천 0 | 조회 39
향기 08:35 - 39
61734
New 변경추적된 내용을 표로 생성하는 VBA코드를 정확히 알고 싶습니다. (컴파일오류로 확인으로 해결하고싶습니다.) 첨부파일
엑셀스타터 | 01:14 | 추천 0 | 조회 40
엑셀스타터 01:14 - 40
61733 함수/공식
New 조건별 고유값 사용 또는 다른값 대체 엑셀파일 (2) 답변완료
nanjose**** | 2023.09.27 | 추천 0 | 조회 47
nanjose**** 2023.09.27 - 47
61728 기능/도구
New 추가기능 실행이 안됩니다. 첨부파일 (1)
엑셀2 | 2023.09.27 | 추천 0 | 조회 50
엑셀2 2023.09.27 - 50
61727 구글시트
New Query 2절 내 열과 열을 연동시키는방법 첨부파일 (2) 답변완료
기니 | 2023.09.27 | 추천 0 | 조회 43
기니 2023.09.27 - 43
61725 함수/공식
New 같은 값을 같은 행으로 올수있게 할 수 있나요? 첨부파일 (5)
또요니 | 2023.09.27 | 추천 0 | 조회 50
또요니 2023.09.27 - 50
61723 함수/공식
New 여러 조건이 일치하는 항목끼리 순위 구하고, 순위 이름 불러오기 엑셀파일 (2)
박수영 | 2023.09.27 | 추천 0 | 조회 47
박수영 2023.09.27 - 47
61722 함수/공식
New 연속으로 반복된 최대횟수 (2)
뚱굼보 | 2023.09.27 | 추천 0 | 조회 43
뚱굼보 2023.09.27 - 43
61717 함수/공식
New 특정년도에 해당하는 개수 구하기 첨부파일 (3) 답변완료
Grrrr | 2023.09.27 | 추천 0 | 조회 53
Grrrr 2023.09.27 - 53
61716 함수/공식
New [구글시트] 행,열 데이터 합치기 관련 문의드립니다. (3)
| 2023.09.27 | 추천 0 | 조회 47
2023.09.27 - 47
61713 함수/공식
New xlookup에서 불러온 "취소요청" 소리로알려주는 기능이 가능할까요? 첨부파일 (2) 답변완료
k*** | 2023.09.27 | 추천 0 | 조회 53
k*** 2023.09.27 - 53
61712 피벗테이블
New 피벗테이블로 출퇴근기록 보기 쉽게 하기 첨부파일 (2) 답변완료
nu | 2023.09.27 | 추천 0 | 조회 56
nu 2023.09.27 - 56
61708 VBA
New 매크로 속도가 PC마다 달라요. 고성능인데 느린 이유가 있을까요:? (1)
iwooya | 2023.09.27 | 추천 0 | 조회 57
iwooya 2023.09.27 - 57
61706 함수/공식
New 문자열에서 정확히 일치하는 월과 일의 합계와 개수 계산 (2) 답변완료
김승현 | 2023.09.27 | 추천 0 | 조회 49
김승현 2023.09.27 - 49
61702 함수/공식
New 수식에서 막혀서 셀 채우기가 안돼서 질문드립니다. 엑셀파일첨부파일 (4) 답변완료
돼지뚱냥이 | 2023.09.27 | 추천 0 | 조회 52
돼지뚱냥이 2023.09.27 - 52
61701 함수/공식
New 엑셀 콤보박스? offset 함수 오류 문의 엑셀파일 (2) 답변완료
난새 | 2023.09.27 | 추천 0 | 조회 42
난새 2023.09.27 - 42
61697 함수/공식
New 날짜와 날짜 사이의 일수?를 알고싶어요 (2)
망나 | 2023.09.27 | 추천 0 | 조회 49
망나 2023.09.27 - 49
61696 함수/공식
New 엑셀에 있는 2,900개의 글쓰기 과제를 한번에 검수 하고 싶습니다. 엑셀파일 (2)
커리어닥터 | 2023.09.27 | 추천 0 | 조회 64
커리어닥터 2023.09.27 - 64
61684 함수/공식
New 다른 시트의 특정 영역 데이터를 자동으로 불러오게 할 수 있을까요? (2)
박카일 | 2023.09.26 | 추천 0 | 조회 59
박카일 2023.09.26 - 59
61680 함수/공식
New xlookup 함수가 안 돌아갑니다. ㅠㅠ 첨부파일 (3)
엑셀2 | 2023.09.26 | 추천 0 | 조회 70
엑셀2 2023.09.26 - 70
61679 VBA
New 조건에 따른 행 추가 및 내용, 합계 표시 (1)
짜장좋아 | 2023.09.26 | 추천 0 | 조회 64
짜장좋아 2023.09.26 - 64
61677 기능/도구
New 다른 엑셀파일의 값 불러오기 중 파일명 입력을 셀에서 가져오고 싶습니다. (1)
leehh**** | 2023.09.26 | 추천 0 | 조회 63
leehh**** 2023.09.26 - 63
61674 함수/공식
New 엑셀 2016 Filter 함수 사용 엑셀파일 (2)
크레이프 | 2023.09.26 | 추천 0 | 조회 81
크레이프 2023.09.26 - 81
61671 파워쿼리/피벗
New [파워쿼리] 관련하여 쿼리를 다른 통합문서에서 가져오기에대한 질문입니다. 첨부파일 (1)
ak스타 | 2023.09.26 | 추천 0 | 조회 68
ak스타 2023.09.26 - 68
61666 함수/공식
New 일자 계산하여 한 달에 몇일인지 계산하는 수식이 이상하게 동작해요 엑셀파일첨부파일 (4) 답변완료
배돌 | 2023.09.26 | 추천 0 | 조회 80
배돌 2023.09.26 - 80
61664 함수/공식
New 필터문의 (1)
칸썬 | 2023.09.26 | 추천 0 | 조회 64
칸썬 2023.09.26 - 64