VBA) 변수명을 텍스트 조합으로 호출할 수 있는 방법이 있을까요?

VBA
작성자
whrjsg****
작성일
2024-04-15 14:04
조회
1264
엑셀버전 : M365

운영체제 : 윈도우10

질문 요약 : 텍스트 조합으로 변수 참조를 할 수 있는 방법이 있을까요?

예를들어서

바보 라는 명칭의 100개의 칸을 가진 배열로 만들어진 변수가 있다면 이 변수를

바보(100) = "안녕하세요"

 

인사말 = "바보" & (100)

위와 같이 텍스트 형태로 조합해서 변수를 호출하는 방법이 있을까요 ?

엑셀에서 INDIRECT 함수와 비슷한 느낌..으로 생각하고 있는데..찾아봐도 방법이 없어보여서요.. @_ @

신고
스크랩
공유
회원등급 : 2레벨
포인트 : 71 EP
총질문 : 1 개 (마감율 : 100%)
채택답변 : 0 개
전체 7

  • 2024-04-15 14:55

    @whrjsg**** 님 배열을 100개로 선언한 다음에 배열에서 불러오면 될 듯 합니다.
    100이라는 Index 번호를 알고,  불러올 변수가 "바보"라는 것을 아니까요...
    만약 변수명도 "바보"외에 여러 개 있는 것이라면 변수명에 따라 IF나 Select를 사용해 보세요.

    Dim 바보(1 to 100), 천치(1 to 100)
    바보(100) = "안녕하세요"
    천치(100) = "안녕히 가세요"
    IF  상태="마중" Then
       인사말 = 바보(100)
    ElseIF 상태 ="배웅" Then
       인사말 = 천치(100)
    EndIF

     

     


    • 2024-04-15 17:39

      @원조백수 님 앗 답변 감사합니다.. ! 희망하는건 아니었는데..^,.ㅠ.. 변수명을 조합등으로 ,, 유동적으로 호출이 가능할지..였습니다 !

      불러야할 대상들이 많다보니까 , 명칭을 배열에 저장하고 for문으로 반복해서 명칭을 불러오면서 배열에 저장된 값들을 계속 불러들이고 싶었는데 ( 안그러면 for문 안에 if나 case문을 여러개 만들어야해서.. ) 하핳..ㅠ


      • 2024-04-15 17:43

        @whrjsg**** 님 변수명을 조합한다는 것을 구체적으로 예를 들어 보세요.

        이름의 조합으로 할당된 값을 찾는다면,
        Dictionary를 이용해서 작업할 수도 있습니다.


        • 2024-04-15 17:53

          @원조백수 님 번거롭게 해드려서 죄송합니다 ! (_ _ )

          이런식의 표가 있다면

          상 중 하 에 따라서 각각 상그룹 , 중그룹 , 하그룹 배열에 넣고 싶은데
          이걸 지금 하고잇는 방식은.

          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          등급 = ActiveSheet.Range("A1:A13")
          값 = ActiveSheet.Range("B1:B13")
          배열길이 = 등급.Cells.Count

          ReDim 상그룹(배열길이)
          ReDim 중그룹(배열길이)
          ReDim 하그룹(배열길이)

          상그룹위치 = 0
          중그룹위치 = 0
          하그룹위치 = 0

          For i = 1 To 배열길이
          If 등급(i) = "상" Then
          상그룹위치 = 상그룹위치 + 1
          상(상그룹위치) = 값(i)
          End If

          If 등급(i) = "중" Then
          중그룹위치 = 중그룹위치 + 1
          증(중그룹위치) = 값(i)
          End If

          If 등급(i) = "하" Then
          하그룹위치 = 하그룹위치 + 1
          하(하그룹위치) = 값(i)
          End If

          Next i

          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          위 구문처럼 , 각 케이스 별로 등급 값을 체크해서 배열에 직접 넣어주고 있는데 이걸,

          등급 = ActiveSheet.Range("A1:A13")
          값 = ActiveSheet.Range("B1:B13")
          배열길이 = 등급.Cells.Count

          ReDim 상그룹(배열길이)
          ReDim 중그룹(배열길이)
          ReDim 하그룹(배열길이)

          상그룹위치 = 0
          중그룹위치 = 0
          하그룹위치 = 0

          For i = 1 To 배열길이

          등급(i)(등급(i) & 그룹위치) = 값(i)

          Next i

           

          이런식으로 ...;ㅅ; 가져온 값들을 조합해서 , 변수에 접근할 수 있는 방법이 있는지...가 ! 궁금했습니다.

          다시 한번 번거롭게해드려서 죄송합니다 (_ _)


          • 2024-04-15 18:10
            채택된 답변

            @whrjsg**** 님 변수를 동적으로 지정하기 어려우므로, Dictionary를 이용해서 작업해 보세요...
            변수에 값을 지정하는 것이 목적이 아니라,  변수명에 따른 값을 찾아오는 것이 주요 목적일 것으로 생각합니다.
            샘플을 첨부합니다.

            Sub test()
                Dim oDict As Object, vData, iR, iCnt(1 To 3), idx
                Set oDict = CreateObject("Scripting.Dictionary")
             
                vData = Worksheets("Sheet1").Range("A2:B27").Value2
             
                For iR = LBound(vData, 1) To UBound(vData, 1)
                    idx = Application.Match(vData(iR, 1), Array("상", "중", "하"), 0)
                    iCnt(idx) = iCnt(idx) + 1
                    oDict(vData(iR, 1) & iCnt(idx)) = vData(iR, 2)
                Next iR
             
                Debug.Print oDict("상1"), oDict("중2"), oDict("하3")
             
                Set oDict = Nothing
            End Sub

             

            첨부파일 : Dictionary_Sample.xlsm


  • 2024-04-15 16:34

    @whrjsg**** 님 100이라는 숫자 대신 변수는 사용할 수 있습니다


    • 2024-04-15 17:40

      @찬바람 님 숫자 대신 변수라는게 어떤 의미인지가 잘..^,.ㅠ.. 죄송합니다..
      희망 하는 점에 대해서 구체적으로 정리해서 올려보겠습니다 !


전체 18,476
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (313)
오빠두엑셀 | 2022.02.03 | 추천 573 | 조회 600645
오빠두엑셀 2022.02.03 573 600645
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 310 | 조회 34963
오빠두엑셀 2021.10.28 310 34963
78431 VBA
New IF 조건문 기초 질문 드립니다. 첨부파일
neoburi | 00:46 | 추천 0 | 조회 32
neoburi 00:46 - 32
78428 기능/도구
New 보이는 범위의 셀로만 붙여넣기하는 법 첨부파일 (2)
유도연 | 2025.04.29 | 추천 0 | 조회 76
유도연 2025.04.29 - 76
78424 함수/공식
New 생년월일 6자리로 나이 계산 어떻게 하나요? (7)
망나 | 2025.04.29 | 추천 0 | 조회 83
망나 2025.04.29 - 83
78421 함수/공식
New INDEX + MATCH 함수 문의 (2)
박상선 | 2025.04.29 | 추천 0 | 조회 81
박상선 2025.04.29 - 81
78420 함수/공식
New 여러시트 중에 같은내용을 찾기 엑셀파일첨부파일 (1)
박석철 | 2025.04.29 | 추천 0 | 조회 63
박석철 2025.04.29 - 63
78419 문서서식
New 크기가 다른 셀에서의 필터 걸기 부탁드립니다 ! 첨부파일 (3) 답변완료
Aberdeen | 2025.04.29 | 추천 0 | 조회 53
Aberdeen 2025.04.29 - 53
78418 함수/공식
New [퀴즈] 텍스트 압축/변형하기 엑셀파일첨부파일 (7)
마법의손 | 2025.04.29 | 추천 0 | 조회 104
마법의손 2025.04.29 - 104
78416 VBA
New 시트보호된 상태에서 매크로 작동시 Range 클래스 중 Insert 메서드에 오류가 있습니다. 첨부파일 (1)
jihye**** | 2025.04.29 | 추천 0 | 조회 49
jihye**** 2025.04.29 - 49
78414 파워쿼리/피벗
New 다른 엑셀 파일에서 필요한 값만 불러오는 방법 첨부파일
망그러진나나 | 2025.04.29 | 추천 0 | 조회 58
망그러진나나 2025.04.29 - 58
78413 함수/공식
New 경과주 구하는 수식 문의 (1)
엑셀렙업용 | 2025.04.29 | 추천 0 | 조회 56
엑셀렙업용 2025.04.29 - 56
78411 문서서식
New 숫자 문자인식 숫자변환하는 법 엑셀파일 (5)
패션피플 | 2025.04.29 | 추천 0 | 조회 72
패션피플 2025.04.29 - 72
78410 VBA
New [매크로관련] 특정셀 자동증가하며, 연속출력할수 있을까요? 엑셀파일 (5) 답변완료
박병호 | 2025.04.29 | 추천 0 | 조회 84
박병호 2025.04.29 - 84
78408 문서서식
New 숫자 서식 변경하기 첨부파일 (3) 답변완료
에그셀 | 2025.04.29 | 추천 0 | 조회 58
에그셀 2025.04.29 - 58
78407 기능/도구
New 원드라이브 MICROSOFT 365 사용중 공동작업시 필터 첨부파일 (1)
록키발보아 | 2025.04.29 | 추천 0 | 조회 52
록키발보아 2025.04.29 - 52
78402 함수/공식
New 괄호안의 시간:분 데이터를 분으로 합산하는 방법 질문드립니다. 엑셀파일첨부파일 (1) 답변완료
nams | 2025.04.28 | 추천 0 | 조회 66
nams 2025.04.28 - 66
78400 함수/공식
New 2차배열에서 countif 첨부파일 (8)
라면이가좋아 | 2025.04.28 | 추천 0 | 조회 85
라면이가좋아 2025.04.28 - 85
78399 함수/공식
New 한달의 마지막주 스케쥴 작성시 전주까지의 휴무 누적 합계 구하는 방법이 궁금합니다. 엑셀파일첨부파일 (3)
쭈누 바라기 | 2025.04.28 | 추천 0 | 조회 52
쭈누 바라기 2025.04.28 - 52
78398 VBA
New VBA 매크로 여러 엑셀 파일에서 사용 (1)
shhhha | 2025.04.28 | 추천 0 | 조회 81
shhhha 2025.04.28 - 81
78396 함수/공식
New 직원별로 근태 합계를 확인하고 싶어요 엑셀파일 (12) 답변완료
배진희 | 2025.04.28 | 추천 0 | 조회 113
배진희 2025.04.28 - 113
78395 함수/공식
New 특정 단어를 포함한 행 골라내는 방법에 대해 문의드립니다. (3) 답변완료
mmm1010 | 2025.04.28 | 추천 0 | 조회 74
mmm1010 2025.04.28 - 74
78392 함수/공식
New 도와주세요... ( 특정값에 해당하는 반 번호 찾아 목록만들기) 엑셀파일첨부파일 (6)
김동생 | 2025.04.28 | 추천 0 | 조회 79
김동생 2025.04.28 - 79
78389 기능/도구
New 오빠두LIVE 196회 - 엑셀 프로젝트 관리 _ 일,주 바꾸는법 엑셀파일 (1)
일류 | 2025.04.28 | 추천 0 | 조회 68
일류 2025.04.28 - 68
78387 함수/공식
New 엑셀 관련 질문입니다. SUM과 IFERROR 입니다 ㅠ (6)
| 2025.04.27 | 추천 0 | 조회 115
2025.04.27 - 115
78382
New Excel 추세선 이상 엑셀파일 (2)
eagle | 2025.04.27 | 추천 0 | 조회 88
eagle 2025.04.27 - 88
78381 함수/공식
New 같은 이름 N 번째 데이터 엑셀파일첨부파일 (14) 답변완료
박정호 | 2025.04.27 | 추천 1 | 조회 123
박정호 2025.04.27 1 123
78380 함수/공식
New On Error Resume Next 문구를 삽입하는 위치는? (2) 답변완료
GEEM | 2025.04.27 | 추천 0 | 조회 91
GEEM 2025.04.27 - 91
78376 함수/공식
New 지역별 증감금액 확인 엑셀파일 (3) 답변완료
충무공 | 2025.04.26 | 추천 0 | 조회 83
충무공 2025.04.26 - 83
78374 함수/공식
New index를 활용한 조건에 맞는 금액을 찾는 방법 엑셀파일첨부파일 (4)
뚜둥뚜둥 | 2025.04.26 | 추천 0 | 조회 102
뚜둥뚜둥 2025.04.26 - 102
78372 기능/도구
New 표서식 차이 문의 첨부파일 (2) 답변완료
hossang**** | 2025.04.25 | 추천 0 | 조회 70
hossang**** 2025.04.25 - 70
78370 피벗테이블
New (피벗테이블) 2024년 2025년 판매 TOP10 비교데이터 첨부파일 (13)
패션피플 | 2025.04.25 | 추천 0 | 조회 105
패션피플 2025.04.25 - 105