안녕하세요, 저는 Excel VBA에 완전히 익숙합니다. 먼저 조건이 충족 될 때 데이터를 복사하려고합니다 (144를 참조하여 데이터 복사) 두 번째로 IT 운영 (표 1)에서 IT 운영 (표 2) 인 경우 셀을 비교 한 다음 가격 (금액)을 변수가 없다면 빈칸으로 남겨 두십시오.
답변
이것은 수식을 사용하여 수행 할 수 있습니다. E 열 (144 Total
)의 마지막 행에 주어진 수와 일치시켜 열 E에 일치하는 항목의 가격으로 F 열을 채우는 것에 대해 생각해 보는 한 가지 방법이 있습니다. 이 경우에는 E10
이라고 가정합니다.
F1
에서
총 공식은 : 단계에서
=IFERROR(IFERROR(VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE),VLOOKUP(E1,G:I,3,FALSE)),"")
:
관심의 수를 예를 들어, 추출 144
는, 및 사용하여 공백을 선도/후행 제거 :
LEFT($E$10,FIND(" ",TRIM($E$10),1)-1)
는이 수에 대한 조회 범위의 첫 번째 행 수있는 바와 같이,이 값에 어떤 행을 찾습니다. *1
은 텍스트를 숫자로 변환합니다.
MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)
이
는 행에게 제공 9.우리는 그래서 우리는 데이터를 알고이 행 (15) 제공 144 Total
MATCH($E$10,$G:$G,0)
보유하고있는 범위의 마지막 행을 찾기 위해 간단하게 뭔가를 사용할 수 있습니다 144
에 대한 행 9와 15 사이에 있습니다.
VLOOKUP
에 사용할 범위를 INDIRECT
및 OFFSET
으로 설정할 수 있습니다.
=CELL("address",OFFSET($G$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($H$1,MATCH($E$10,$G:$G,0)-1,,1,1))
이렇게하면 $G$9:$H$15
이됩니다. -1
의 조정을 참고하여 OFFSET
을 오른쪽 행에 넣고 OFFSET
시작 셀은 VLOOKUP
에 필요한 열을 제공하기 위해 다른 열에 있어야합니다.
이제 열 E 값을 조회 할 수 있습니다. Enhancement
는 새로 정의 된 범위에 INDIRECT
를 통해 액세스되는 :이 E1
에 지정된 항목에 대한 범위에서 price
열을 얻을 VLOOKUP(E1,$G$9:$H$15,2,FALSE)
, 즉 말하는
=VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE)
.
이 값이 없으면 #N/A
을 반환합니다.이 값을 사용하면 144 Total
을 보유한 병합 된 셀 때문인지 먼저 확인할 수 있습니다. 값이 실제로 H가 아닌 G 열에있는 경우 $G$9:$H$15
에없는 경우 IFERROR
을 사용하고 G:I
열을 사용하여 일치 항목을 검색하고 3 열을 반환합니다.이 여전히 #N/A
을 반환
IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE))
않으면 값이 존재하지 알고 우리가 반환해야합니다 : 같은 위의 단계에 기술 된 공식에 대한 자리 표시 자 priorLookup
를 사용
의사 공식 어느, 보이는 ""
. 이것은 우리가 다른 IFERROR
으로이 문제를 해결할 수 있습니다
IFERROR(IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE)),"")
그래서 우리에게 시작에 언급 된 모든 공식을 제공합니다. 여기가 시트에 사용되는
는 :
외에 당신이 무엇을하고 있는지 이해하지 못하는에서
, 당신의 질문은 절대적으로 당신이 직면하고있는 문제가 무엇인지 전혀 표시를 제공하지 않습니다. – YowE3K
S.O에 오신 것을 환영합니다! 시도해 봤어? 그렇다면 코드를 제공해주십시오. [둘러보기] (http://stackoverflow.com/tour) 및 [묻는 방법] (http://stackoverflow.com/help/how-to-ask)을 살펴보십시오. 친절한 알림 : StackOverflow는 "우리가 당신을위한 코드"서비스 공급자가 아닙니다. [VBA 소개] (https://blog.udemy.com/excel-macros-tutorial/) 또는 [Mid-Advanced Tutorials] (http : /analysistabs.com/excel-vba/codes-examples-macros-how-tos-most-useful-basics-advanced/) 및 내 개인 즐겨 찾기 (http://analystcave.com/excel-vba-tutorial/) – Sgdva