vba 조건 값을 찾아서 행 값 다 가져오기가 안됩니다.

VBA
작성자
ㄱ🐶두두
작성일
2021-10-29 00:19
조회
651
엑셀버전 : 엑셀2019

운영체제 : 윈도우10

Sub 주소_data()

Dim rngList As Range

Dim rngValue As Range

Dim strPrice As String

Dim i As Integer

Sheets("PO_SKU_LIST_20211028164553").Activate
Set rngList = ActiveSheet.Range("H:H")

For i = 1 To WorksheetFunction.CountA(Range("F:F"))

Set rngValue = rngList.Find(Range("F1" & i).Offset(0, -3).Resize(1, 1)) '여기도 문제 같아요.

If Not rngValue Is Nothing Then
strPrice = rngValue.end(2) '바로 옆에 수량 데이터를 가져옴 (제 생각에 여기가 문제가 아닐까 싶습니다..)
End If

Range("V1").Offset(i, 0) = strPrice

Next i

End Sub

 

셀 v w x 에 조건에 맞는 1번 2번 3번의 자료를 가져와서 넣고 싶습니다..

 

f값의 조건에 맞으면 거기에 1~3번의 값들이 자동으로 채워지게 하는 것을 vba로 하고 싶어요..vlookup피하고 싶어요

전체 5

  • 2021-10-29 11:13

    제가 이해한 대로 코드를 만들었습니다.

    Sub 주소_data변경()
    
        Dim cSName As String
        Dim yLoop As Integer
        Dim xLoop As Integer
        
        Dim xOffset As Long
        Dim yOffset As Long
        Dim iRow As Long
        Dim iCol As Long
        
        Dim arrKeyValue     '// 전체 크기를 모르므로 형 선언 하지 않음
        
            
        cSName = "PO_SKU_LIST_20211028164553"   '// 시트명을 변수로 선언
        Sheets(cSName).Select
        
        
        yOffset = 17    '// 17행
        xOffset = 8     '// H컬럼
        
        
        iRow = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row               '// 비교 데이터의 시작위치 F컬럼 = 6
        iCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column     '// 결과가 출력되는 컬럼 // 1행의 마지막 컬럼 위치 //   X컬럼= 24
        
        
        '// 딕셔러니도 해도 되고
        '// 엑셀 셀 접근으로 해도 되고
        '// 범위로 해도 되고
        '// 배열로 해도 되는데... 여기서는 배열로 합니다.
        
        arrKeyValue = Range(Cells(yOffset, xOffset), Cells(yOffset + 10, xOffset + 3)).Value '// (y1,x1),(y2,x2) 형식으로 데이터 범위를 설정 // 동적으로 할 수 있으나 간단하게 작성
        
        
        For yLoop = 2 To iRow  '// 2행부터 비교데이터의 행을 반복한다.
        
            cFindString = Cells(yLoop, 6).Value '// F컬럼=6
            
            For xLoop = LBound(arrKeyValue, 1) To UBound(arrKeyValue, 1) '// 기준 테이블과 비교한다
                
                If arrKeyValue(xLoop, 1) = cFindString Then '// 비교값이 있으면 결과 출력
                    Cells(yLoop, iCol - 2).Value = arrKeyValue(xLoop, 2)    '// 1번
                    Cells(yLoop, iCol - 1).Value = arrKeyValue(xLoop, 3)    '// 2번
                    Cells(yLoop, iCol - 0).Value = arrKeyValue(xLoop, 4)    '// 3번
                    
                    Exit For    '// 비교는 한번만 함 //
                End If
                
            Next xLoop
        Next yLoop
    
        '// 셀의 위치는 나중에 수정을 위하여
        '// yOffset, xOffset, iRow, iCol 변수를 기준으로 +, - 형태로 수정하세요.
        
    End Sub
    

     

    • 참고로
      꼭 필요한 것이 아니고
      VBA 에 익숙하지 않으시면
      - WorksheetFunction
      - Range 객체의 사용은 가급적 지양하세요.

    • 2021-10-29 12:51

      @야휘 님 안녕하세요 선생님,

      답변 감사합니다. 완전히 작동이 됩니다!

      혹시,

      cSName = "PO_SKU_LIST_20211028164553"   '// 시트명을 변수로 선언
          Sheets(cSName).Select
          
          
          yOffset = 17    '// 17행
          xOffset = 8     '// H컬럼

      이부분을 다른 시트의 데이터를 비교하여 가져오게 하려고 한다면,
      yOffset 이 친구를 다른 시트 값으로 표기하면 될까요?


      • 2021-10-29 13:51
        채택된 답변

        @ㄱ🐶두두 님 우선 Range와 Value를 혼돈한 곳이 많으시고 Range이는 하나의 Cell이아니므로 Offset이 안되고 Cells로

        정리합니다. 첨부 파일 참조하세요.

        Sub 주소_data()

        Dim rngList As Range
        Dim tarList As Range
        Dim strPrice1, strPrice2, strPrice3 As Variant
        Dim i, n As Integer

        Sheets("PO_SKU_LIST_20211028164553").Activate

        Set rngList = ActiveSheet.Range("H17", Range("H17").End(xlDown))
        Set tarList = ActiveSheet.Range("F1", Range("F1").End(xlDown))

        For n = 1 To WorksheetFunction.CountA(tarList.Rows)

        For i = 1 To WorksheetFunction.CountA(rngList.Rows)

        If rngList.Cells(i, 1).Value = tarList.Cells(n, 1).Value Then

        strPrice1 = rngList.Cells(i, 2).Value
        strPrice2 = rngList.Cells(i, 3).Value
        strPrice3 = rngList.Cells(i, 4).Value

        tarList.Cells(n, 17).Value = strPrice1
        tarList.Cells(n, 18).Value = strPrice2
        tarList.Cells(n, 19).Value = strPrice3

        End If

        Next

        Next


        • 2021-10-29 13:53

          @Yukon 님 파일 첨부합니다.

          첨부파일 : PO-SKU-LIST-202110281645531.xlsm


          • 2021-11-01 11:03

            @Yukon 님 감사합니다 선생님.

            주신 시트를 활용하여서, 다른 시트와 연동도 하였습니다

             


전체 5,213
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (31)
트로피 오빠두엑셀 | 2021.10.12 | 추천 23 | 조회 806
트로피 오빠두엑셀 2021.10.12 23 806
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (22)
오빠두엑셀 | 2021.10.28 | 추천 32 | 조회 2492
트로피 오빠두엑셀 2021.10.28 32 2492
26408 기능/도구
New 표에서 바로만든 슬라이서도 보고서연결 기능과 비슷하게 만들 수 있나요?
차가운열매 | 20:03 | 추천 0 | 조회 2
차가운열매 20:03 0 2
26405 함수/공식
New 최고점/최저점 찾아내기 첨부파일 (1)
km**** | 18:52 | 추천 0 | 조회 15
km**** 18:52 0 15
26403 VBA
New VBA를 이용하여 euc-kr로 인코딩된 site 크롤링 방법
콩순이 | 18:38 | 추천 0 | 조회 14
콩순이 18:38 0 14
26401 VBA
New 목표값 계산 자동 매크로 방법 첨부파일
박우성 | 18:08 | 추천 0 | 조회 18
박우성 18:08 0 18
26399 피벗테이블
New 데이터 새로고침 시 피벗테이블 연결 오류 첨부파일 (1)
유정 | 17:06 | 추천 0 | 조회 16
유정 17:06 0 16
26392 함수/공식
New MINIFS 함수 사용시 0으로 값 반환됨 (초보자에게 도움 부탁드립니다...ㅜㅜ) 첨부파일 (1)
김원석 | 15:47 | 추천 0 | 조회 22
김원석 15:47 0 22
26387 VBA
New VBA 엑셀에서 다른 프로그램 실행하기 (2) 답변완료
병욱 | 15:07 | 추천 0 | 조회 27
병욱 15:07 0 27
26378 피벗테이블
New 피벗테이블 집계 오류 (5)
가을남자 | 11:56 | 추천 0 | 조회 32
가을남자 11:56 0 32
26371 VBA
New VBA 항목별 행렬전환 문의 첨부파일 (6) 답변완료
H.B | 10:57 | 추천 1 | 조회 33
H.B 10:57 1 33
26368 문서서식
New 셀에 입력시 자음 모음 분리문제 (1)
흑형 | 09:25 | 추천 0 | 조회 26
흑형 09:25 0 26
26366 VBA
New ■ 셀에 삽입된 메모 수량 카운팅하는 방법 첨부파일 (5) 답변완료
비스타 | 08:56 | 추천 1 | 조회 42
비스타 08:56 1 42
26360 함수/공식
New 엑셀 데이터통합 기능 이용시 합계가 달라지는 이유 첨부파일 (5)
wlfl**** | 00:24 | 추천 0 | 조회 39
wlfl**** 00:24 0 39
26343 함수/공식
New 전산입고품목과 실제입고품목의 실재고조사관련 양식(함수+피벗테이블)첨언좀 부탁드립니다.도와주세요! 첨부파일 (4) 답변완료
sunjong**** | 2022.01.24 | 추천 0 | 조회 66
sunjong**** 2022.01.24 0 66
26341 VBA
New VBA 내 배열 통합(쿼리 통합 기능을 VBA에서 구현하고자 합니다.) 첨부파일
병욱 | 2022.01.24 | 추천 0 | 조회 29
병욱 2022.01.24 0 29
26339 VBA
New 많은 텍스트상자안 문자 찾기 (2)
noeu**** | 2022.01.24 | 추천 -1 | 조회 45
noeu**** 2022.01.24 -1 45
26338 함수/공식
New 지정한 일수(days)를 달력에 자동으로 표시 되게끔 설정이 가능한가요? 첨부파일 (3) 답변완료
말창 | 2022.01.24 | 추천 0 | 조회 50
말창 2022.01.24 0 50
함수/공식
New Re:지정한 일수(days)를 달력에 자동으로 표시 되게끔 설정이 가능한가요? (1)
Lucas's | 2022.01.24 | 추천 0 | 조회 31
Lucas's 2022.01.24 0 31
26336 함수/공식
New 셀안 동일 회사명을 순차 카운트를 하고 싶습니다. (3) 답변완료
sickp**** | 2022.01.24 | 추천 0 | 조회 27
sickp**** 2022.01.24 0 27
26334 함수/공식
New 이름만 치면 열 다 띄워주는 방법을 알려주세요 첨부파일 (8) 답변완료
아마테라스 | 2022.01.24 | 추천 0 | 조회 50
아마테라스 2022.01.24 0 50
26329 VBA
New VBA 자동으로 그룹 구분하여 sheet split 기능 행열 전환 관련 질문드립니다. 첨부파일
shon**** | 2022.01.24 | 추천 -1 | 조회 19
shon**** 2022.01.24 -1 19
26324 기능/도구
New 파일 오류로 열리지 않습니다. (2)
가을남자 | 2022.01.24 | 추천 0 | 조회 27
가을남자 2022.01.24 0 27
26323 함수/공식
New 불려오는 data 행 길이에 따라 자동으로 행길이 바뀌도록 하는 수식/기능 관련 첨부파일 (1)
엑초파 | 2022.01.24 | 추천 0 | 조회 34
엑초파 2022.01.24 0 34
26308 VBA
New pdf 로 자동 저장하고 싶습니다. 첨부파일 (1) 답변완료
wan**** | 2022.01.24 | 추천 0 | 조회 44
wan**** 2022.01.24 0 44
26295 파워쿼리/피벗
New 피벗테이블 '각 필드에 유지할 항목 수'에서 질문입니다. (3)
월마리아 | 2022.01.23 | 추천 0 | 조회 36
월마리아 2022.01.23 0 36
26294 함수/공식
New 합계값이 일치하지 않는 값 구하기! (1)
정해인 | 2022.01.23 | 추천 0 | 조회 43
정해인 2022.01.23 0 43
26290 함수/공식
New 기간구분 IF함수 에러 원인이 뭔지 모르겠어요 (6) 답변완료
마운틴 | 2022.01.23 | 추천 0 | 조회 50
마운틴 2022.01.23 0 50
26285 함수/공식
New 이번주 시작일(월요일), 마지막일(금요일) yyyy-mm-dd 형식으로 출력하는 방법 (1)
joeee | 2022.01.23 | 추천 0 | 조회 42
joeee 2022.01.23 0 42
26284 피벗테이블
New 피벗 테이블 날짜인식 및 월별 그룹화 관련 첨부파일 (3)
baechu9 | 2022.01.23 | 추천 0 | 조회 33
baechu9 2022.01.23 0 33
26278 피벗테이블
New 피벗테이블 영상보면서 따라해보고 있는데요 잘안되요 ㅠ 첨부파일 (1)
희야맘 | 2022.01.23 | 추천 0 | 조회 27
희야맘 2022.01.23 0 27
26276 문서서식
New [조건부 서식] 아직 데이터가 입력되지 않은 칸에 조건부 서식 적용하지 않도록 하기 첨부파일
jo2 | 2022.01.23 | 추천 0 | 조회 33
jo2 2022.01.23 0 33
26268 함수/공식
New 조건부서식 내에서 INDIRECT 함수와 AND 함수를 함께 사용할 수 없나요? (10)
나는나 | 2022.01.22 | 추천 0 | 조회 77
나는나 2022.01.22 0 77