2017-12-30 67 views
-3

enter image description hereVBA Excel 복사 복사 붙여 넣기

안녕하세요, 저는 Excel VBA에 완전히 익숙합니다. 먼저 조건이 충족 될 때 데이터를 복사하려고합니다 (144를 참조하여 데이터 복사) 두 번째로 IT 운영 (표 1)에서 IT 운영 (표 2) 인 경우 셀을 비교 한 다음 가격 (금액)을 변수가 없다면 빈칸으로 남겨 두십시오.

+1

, 당신의 질문은 절대적으로 당신이 직면하고있는 문제가 무엇인지 전혀 표시를 제공하지 않습니다. – YowE3K

+0

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

답변

0

이것은 수식을 사용하여 수행 할 수 있습니다. 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에 사용할 범위를 INDIRECTOFFSET으로 설정할 수 있습니다.

=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)),"") 

그래서 우리에게 시작에 언급 된 모든 공식을 제공합니다. 여기가 시트에 사용되는

는 :

외에 당신이 무엇을하고 있는지 이해하지 못하는에서

Formula in sheet