2013-07-23 3 views
0

두 개의 시트가있는 Excelbook이 있습니다. 1) 가져 오기 2) 가격 규칙.매치를 기반으로 한 시트에서 다른 시트로 행 정보 복사

Pricing Rules Sheet

A 열은 I가 일치해야하는 것입니다. 값의 예로는 STA_PNP4, STA_PST 등이 있습니다. 시트에는 잠재적으로 약 50 개의 서로 다른 행이 있으며 시간이 지남에 따라 계속 증가 할 것입니다. 그런 다음 각 행에 대해 B to CF 열에 가격 책정 값이 있습니다.

Import Sheet

이 시트는 동일한 수의 열을 가지고 있지만 열 A가 작성됩니다. 값의 예로는 STA_PNP4_001_00, STA_PNP4_007_00, STA_PST_010_00 등이 있습니다.

내가해야 할 일 : 초 전에 Import SheetColumn A의 텍스트가 "_"Pricing Rules SheetColumn A의 열 식별자와 일치하는 경우,

Import sheet에 해당 행에 대한 Pricing Rules 시트의 B to CF의 나머지 부분을 복사 일치하는 행.

어디서부터 시작해야할까요?

+2

매크로가 필요하다고 생각하지 않습니다. LEFT(), MID() 및 VLOOKUP() 조합이 트릭을 수행합니다. 일치하는 열에 중복 값이없는 한 –

+0

Vlookup을보아야합니다. http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx –

답변

1

수식 만 사용하면 어떨까요?

가정하면

1) 오기 시트 데이터는

(COL의 A)

STA_PNP4_007_00

STA_PNP4_001_00

STA_PNP4_001_00

. . 가격 결정 규칙 시트

2) 데이터

(골 A) (골의 B) (COLC) (골 D) .......

STA_PNP4 1 2 3 .... .

STA_PST 4 5 6 .....

STA_ASA2 ..... 7 8 9

나서 가져 시트 B1 셀이 수식 물품 = IFERROR (VLOOKUP (LEFT (A1 , FIND (""(, A1은 찾기", "A1) +1) -1) PricingRules를 $ A $ 1! $ CF $ 100,2,0)"칼럼 B에서 다운 ")

드래그를

및 C 열의 경우 D는 색인 번호를 2에서 (C의 경우 3), (D의 경우 4) 등으로 변경합니다.

0

때문에 시간이 지남에 따라 계속 증가 할 것입니다. VBA를 사용하는 것이 가장 좋습니다.그러나 코드를 사용해도 공식을 통해 '그룹'을 적용하여 시작하므로 스프레드 시트에 수식이 너무 많이 걸리므로 속도가 느리고 손상되기 쉽지 않습니다. 밑줄이 그 대답에 서식 명령으로 처리되어 있기 때문에 반복 @ xtremeExcel의 솔루션의 일부처럼 뭔가 :

=LEFT(A1,FIND("_",A1,1+FIND("_",A1))-1) 

I 좋겠 직시 당신에게 Import Sheet가에서 추가 열로서이 (아래 복사) - 역할을 Pricing Rules Sheet에 연결할 주요 필드. 맨 왼쪽에 VLOOKUP이 전체 시트에 사용할 수 있도록 말하십시오. 다음 키 필드로 그와

중 하나

  1. Pricing Rules Sheet을 채우는 코드만큼 자주 실행/원하는을 작성합니다. 매번 (처음에는 적은 양의 경우) 또는 점진적으로 (대량으로 보내는 것이 좋습니다) 매번 "처음부터"채우십시오.
  2. VLOOKUP을 사용하십시오 (권장 사항). 그러나 최소한 84 개의 열과 아마도 많은 수식 인 50 개 이상의 행이 있지만 일시적인 '일시 중지'솔루션 (예 : 인구 복사/붙여 넣기 특수/값)로 실행 가능할 수 있습니다.
  3. 타협. As 2. 행/셀을 적절한 수식/a로 유지하고 ColumnA 및/또는 ColumnA에 추가하기 위해 다른 열을 채울 수 있도록 복사 : B.
0

입력 해 주셔서 감사합니다. 그것은을 발견하면

내 가격에서 찾아 복사 할 전체 행에 걸쳐 적용 내 추한 기능을한다

{=VLOOKUP(LEFT($A4,7),PricingRules!A3:CF112,{2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84},FALSE)}

은 모든 열 규칙 :

나는이 같은 방법을 통해 구현 있어요 시합.

0

위의 시나리오에서 작성한 기능은 다음과 같습니다. 언급 한 요구 사항에 따라 작동합니다.

Sub CopyData() 
Dim wb As Workbook 
Dim importws As Worksheet 
Dim PricingRulesws As Worksheet 
Dim Pricingrowcount As Integer 
Dim importRowCount As Integer 
Dim FindValue As String 
Dim textvalue As String 
Dim columncount As Integer 
Dim stringarray() As String 

'Enter full address of your file ex: "C:\newfolder\datafile.xlsx" 
Set wb = Workbooks.Open("C:\newfolder\datafile.xlsx") 

'Enter the name of your "import" sheet 
Set importws = Sheets("Import") 

'Enter the name of your "Pricing" sheet 
Set PricingRulesws = Sheets("PricingRules") 

For Pricingrowcount = 1 To PricingRulesws.UsedRange.Rows.Count 
    FindValue = PricingRulesws.Cells(Pricingrowcount, 1) 
    For importRowCount = 1 To importws.UsedRange.Rows.Count 
     textvalue = importws.Cells(importRowCount, 1) 
     stringarray = Split(textvalue, "_") 
     textvalue = stringarray(0) & "_" & stringarray(1) 

     If FindValue = textvalue Then 
      For columncount = 2 To PricingRulesws.UsedRange.Columns.Count 
       importws.Cells(importRowCount, columncount) = PricingRulesws.Cells(Pricingrowcount, columncount) 
      Next columncount 
     End If 
    Next importRowCount 
Next Pricingrowcount 
End Sub 
관련 문제