Բովանդակություն
Ուսուցումը ցույց է տալիս, թե ինչպես օգտագործել VLOOKUP ֆունկցիան այլ աշխատաթերթից կամ աշխատանքային գրքույկից տվյալները պատճենելու համար, Vlookup-ը բազմաթիվ թերթերում և դինամիկ կերպով փնտրել տարբեր թերթերից արժեքները տարբեր բջիջներ վերադարձնելու համար:
Excel-ում որոշ տեղեկություններ փնտրելիս հազվադեպ է պատահում, երբ բոլոր տվյալները գտնվում են նույն թերթիկում: Ավելի հաճախ, դուք ստիպված կլինեք որոնել բազմաթիվ թերթերում կամ նույնիսկ տարբեր աշխատանքային գրքույկներում: Լավ նորությունն այն է, որ Microsoft Excel-ը տրամադրում է դա անելու մեկից ավելի եղանակներ, իսկ վատ նորությունն այն է, որ բոլոր ուղիները մի փոքր ավելի բարդ են, քան ստանդարտ VLOOKUP բանաձևը: Բայց մի փոքր համբերությամբ մենք կպարզենք դրանք :)
Ինչպես VLOOKUP անել երկու թերթերի միջև
Սկզբի համար եկեք ուսումնասիրենք ամենապարզ դեպքը` օգտագործելով VLOOKUP-ը պատճենել տվյալները մեկ այլ աշխատաթերթից: Այն շատ նման է սովորական VLOOKUP բանաձևին, որը որոնում է նույն աշխատաթերթում: Տարբերությունն այն է, որ դուք ներառում եք թերթի անունը table_array արգումենտում, որպեսզի ձեր բանաձևն ասեք, թե որ աշխատաթերթում է գտնվում որոնման տիրույթը:
Մյուս թերթից VLOOKUP-ի ընդհանուր բանաձևը հետևյալն է.
VLOOKUP(lookup_value, Teet! 2> թերթ. Դրա համար մենք սահմանում ենք հետևյալ արգումենտները.- Որոնման_արժեքները գտնվում են Ամփոփում թերթի A սյունակում, և մենքVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Վերջապես, այս ստանդարտ VLOOKUP բանաձեւը որոնում է A2 արժեքը A2:C6 միջակայքի առաջին սյունակում West թերթում և վերադարձնում է. համընկնում 2-րդ սյունակից: Վերջ:
Դինամիկ VLOOKUP` բազմաթիվ թերթերից տվյալները տարբեր բջիջներ վերադարձնելու համար
Նախ, եկեք որոշենք, թե կոնկրետ ինչ է նշանակում «դինամիկ» բառը այս համատեքստում և ինչպես է լինելու այս բանաձևը: տարբերվում են նախորդներից:
Այն դեպքում, երբ դուք ունեք տվյալների մեծ կտորներ նույն ձևաչափով, որոնք բաժանված են մի քանի աղյուսակների վրա, դուք կարող եք տեղեկատվություն հանել տարբեր թերթերից տարբեր բջիջներում: Ստորև բերված պատկերը ցույց է տալիս հայեցակարգը.
Ի տարբերություն նախորդ բանաձևերի, որոնք արժեք էին ստանում կոնկրետ թերթից՝ հիմնված եզակի նույնացուցիչի վրա, այս անգամ մենք փորձում ենք արժեքներ հանել մի քանի թերթերից։ ժամանակ:
Այս առաջադրանքի երկու տարբեր լուծումներ կան: Երկու դեպքում էլ դուք պետք է մի փոքր նախապատրաստական աշխատանք կատարեք և յուրաքանչյուր որոնման թերթում տվյալների բջիջների համար ստեղծեք անվանված միջակայքեր: Այս օրինակի համար մենք սահմանեցինք հետևյալ միջակայքերը.
- East_Sales - A2:B6 East թերթում
- North_Sales - A2: B6 հյուսիսային թերթիկում
- South_Sales - A2:B6 հարավային թերթում
- West_Sales - A2:B6 արևմտյան թերթում
VLOOKUP և nested IFs
Եթե դուք ունեք ողջամիտ թվով թերթեր փնտրելու համար, կարող եք օգտագործել nested IF ֆունկցիաներընախապես սահմանված բջիջներում հիմնաբառերի հիման վրա թերթիկը ընտրելու համար (մեր դեպքում՝ B1-ից մինչև D1 բջիջները):
A2-ի որոնման արժեքով բանաձևը հետևյալն է.
=VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)
Անգլերեն թարգմանված IF մասում ասվում է.
Եթե B1-ը Արևելք է, ապա նայեք East_Sales անունով տիրույթում; եթե B1-ը Հյուսիսային է , նայեք Հյուսիսային_Վաճառք անունով տիրույթում; եթե B1-ը Հարավ է, նայեք South_Sales անունով տիրույթում; և եթե B1-ը West է, նայեք West_Sales անունով տիրույթում:
IF-ի վերադարձած միջակայքը գնում է դեպի աղյուսակի_զանգված VLOOKUP-ի, որը ձգում է համապատասխան թերթիկի 2-րդ սյունակից համապատասխան արժեք:
Խառը հղումների խելացի օգտագործումը որոնման արժեքի համար ($A2 - բացարձակ սյունակ և հարաբերական տող) և IF-ի տրամաբանական թեստը (B$1 - հարաբերական սյունակ): և բացարձակ տող) թույլ է տալիս առանց որևէ փոփոխության պատճենել բանաձևը այլ բջիջներում. Excel-ը ավտոմատ կերպով կարգավորում է հղումները՝ հիմնվելով տողի և սյունակի հարաբերական դիրքի վրա:
Այսպիսով, մենք մուտքագրում ենք բանաձևը B2-ում, այն ճիշտ պատճենում և իջնել այնքան սյունակ և տող, որքան անհրաժեշտ է, և ստացեք հետևյալ արդյունքը.
ԱՆՈՒՂՂԱԿԱՆ VLOOKUP
Բազմաթիվ թերթերի հետ աշխատելիս մի քանի ներդիր մակարդակներ կարող են ձևակերպել նաև բանաձևը: երկար ու դժվար ընթերցվող: Շատ ավելի լավ միջոց է ստեղծել դինամիկ vlookup միջակայք INDIRECT-ի օգնությամբ:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Այստեղ մենք հղումը կապում ենք այն բջիջին, որը պարունակում էանվանված տեսականու եզակի մասը (B1) և ընդհանուր մասը (_Sales): Սա ստեղծում է «East_Sales»-ի նման տեքստային տող, որն INDIRECT-ը վերածում է Excel-ի կողմից հասկանալի տիրույթի անվանման:
Արդյունքում դուք ստանում եք կոմպակտ բանաձև, որը գեղեցիկ է աշխատում ցանկացած թվով թերթերի վրա.
Այսպես է Excel-ում թերթերի և ֆայլերի միջև Vlookup-ը: Շնորհակալ եմ կարդալու համար և հուսով եմ, որ հաջորդ շաբաթ կտեսնենք ձեզ մեր բլոգում:
Զբաղվեք աշխատանքային գրքույկով ներբեռնելու համար
Vlookup բազմաթիվ թերթերի օրինակներ (.xlsx ֆայլ)
վերաբերում է առաջին տվյալների բջիջին, որը A2 է: - Table_array -ը Jan թերթի A2:B6 միջակայքն է: Անդրադառնալու համար միջակայքի հղումը նախածանց դրեք թերթի անվան հետ, որին հաջորդում է բացականչական կետը՝ Jan!$A$2:$B$6:
Խնդրում ենք ուշադրություն դարձնել, որ մենք կողպում ենք ընդգրկույթը բջիջների բացարձակ հղումներով, որպեսզի այն չփոխվի բանաձևը այլ բջիջներում պատճենելիս:
Col_index_num -ը 2 է, քանի որ մենք ուզում ենք պատճենել արժեքը: B սյունակից, որը աղյուսակի զանգվածի 2-րդ սյունակն է:
- Range_lookup սահմանված է FALSE` ճշգրիտ համընկնում փնտրելու համար:
Փաստարկները միասին հավաքելով՝ ստանում ենք հետևյալ բանաձևը.
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Քաշեք բանաձևը սյունակի ներքև և կստանաք հետևյալ արդյունքը.
Ա. Նմանապես, դուք կարող եք փնտրել տվյալները Փետրվար և Մարտ թերթերից՝
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
Խորհուրդներ և նշումներ.
- Եթե թերթի անունը պարունակում է բացատներ կամ ոչ այբբենական նիշ , այն պետք է փակցվի մեկ չակերտների մեջ, օրինակ 'Jan Sales'!$A$2:$B$6 : Լրացուցիչ տեղեկությունների համար տե՛ս Ինչպես հղում կատարել մեկ այլ թերթիկ Excel-ում:
- Թերթի անունը ուղղակիորեն բանաձևի մեջ մուտքագրելու փոխարեն, կարող եք անցնել որոնման աշխատաթերթին և այնտեղ ընտրել տիրույթը: Excel-ը ավտոմատ կերպով կտեղադրի ճիշտ շարահյուսությամբ տեղեկանք՝ ձեզ չխնայելով անունը ստուգելու և անսարքությունները վերացնելու համար:
Vlookup այլ աշխատանքային գրքույկից
To VLOOKUP երկուսի միջև:աշխատանքային գրքույկներում ներառեք ֆայլի անունը քառակուսի փակագծերում, որին հաջորդում են թերթի անվանումը և բացականչական կետը:
Օրինակ, A2 արժեքը A2:B6 միջակայքում որոնելու համար Jan թերթում: Sales_reports.xlsx աշխատանքային գրքույկը, օգտագործեք այս բանաձևը.
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Ամբողջական մանրամասների համար տես VLOOKUP-ը մեկ այլ աշխատանքային գրքույկից Excel-ում:
Vlookup ողջ IFERROR-ով մի քանի թերթ
Երբ Ձեզ անհրաժեշտ է փնտրել ավելի քան երկու թերթերի միջև, ամենահեշտ լուծումը VLOOKUP-ի օգտագործումն է IFERROR-ի հետ համատեղ: Գաղափարն այն է, որ մի քանի IFERROR ֆունկցիաներ տեղադրվեն՝ հերթով ստուգելու բազմաթիվ աշխատաթերթեր. եթե առաջին VLOOKUP-ը համընկնում չի գտնում առաջին թերթում, որոնեք հաջորդ թերթում և այլն:
IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " Չի գտնվել "))Որպեսզի տեսնենք, թե ինչպես է այս մոտեցումն աշխատում իրական տվյալների վրա, եկեք դիտարկենք հետևյալ օրինակը: Ստորև բերված է Ամփոփում աղյուսակը, որը մենք ցանկանում ենք լրացնել ապրանքների անուններով և գումարներով՝ փնտրելով պատվերի համարը West և East թերթերում.
Նախ, մենք պատրաստվում ենք քաշել իրերը: Դրա համար մենք հրահանգում ենք VLOOKUP բանաձևին որոնել պատվերի համարը A2-ում East թերթում և վերադարձնել արժեքը սյունակ B-ից (2-րդ սյունակ table_array A2:C6): Եթե ճշգրիտ համընկնում չի գտնվել, ապա փնտրեք West թերթում: Եթե երկու Vlookup-ներն էլ ձախողվեն, վերադարձրեք «Չի գտնվել»:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Գումարը վերադարձնելու համար,պարզապես փոխեք սյունակի ինդեքսի համարը 3:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
Խորհուրդ. Անհրաժեշտության դեպքում կարող եք նշել տարբեր սեղանների զանգվածներ տարբեր VLOOKUP ֆունկցիաների համար: Այս օրինակում երկու որոնման թերթերն ունեն նույն թվով տողեր (A2:C6), բայց ձեր աշխատաթերթերը կարող են տարբեր լինել չափերով:
Բազմաթիվ աշխատանքային գրքույկներում տեղակայում
Երկու կամ ավելի աշխատանքային գրքույկների միջև տեղակայելու համար աշխատանքային գրքի անունը փակցրեք քառակուսի փակագծերում և դրեք թերթի անունից առաջ: Օրինակ, ահա թե ինչպես կարող եք Vlookup տեղադրել երկու տարբեր ֆայլերում ( Book1 և Book2 ) մեկ բանաձևով.
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE),"Not found"))
Սյունակի ինդեքսի համարը դինամիկ դարձրեք Vlookup-ի բազմաթիվ սյունակներում
Այն իրավիճակում, երբ դուք պետք է վերադարձնեք տվյալները մի քանի սյունակներից, col_index_num դինամիկ դարձնելը կարող է ձեզ որոշակի ժամանակ խնայել: Պետք է կատարել մի քանի ճշգրտում.
- col_index_num արգումենտի համար օգտագործեք COLUMNS ֆունկցիան, որը վերադարձնում է նշված զանգվածի սյունակների քանակը՝ COLUMNS($A$1): :B$1): (Տողի կոորդինատը իրականում նշանակություն չունի, այն կարող է լինել ցանկացած տող:)
- lookup_value արգումենտում կողպեք սյունակի հղումը $ նշանով ($A2), այնպես որ այն մնում է: ամրագրված է բանաձևը այլ սյունակներում պատճենելիս:
Արդյունքում դուք ստանում եք մի տեսակ դինամիկ բանաձև, որը հանում է համապատասխան արժեքները տարբեր սյունակներից՝ կախված նրանից, թե որ սյունակում է բանաձևը պատճենվում.
=IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))
Երբ մուտքագրվում է B սյունակում, COLUMNS ($A$1:B$1)գնահատում է 2-ին, ասելով VLOOKUP-ին, որ վերադարձնի արժեք աղյուսակի զանգվածի 2-րդ սյունակից:
Երբ պատճենվում է C սյունակում (այսինքն, դուք բանաձևը քաշել եք B2-ից C2), B$1-ը փոխվում է C$1-ի, քանի որ սյունակի հղումը հարաբերական է: Հետևաբար, COLUMNS($A$1:C$1) գնահատվում է 3՝ ստիպելով VLOOKUP-ին վերադարձնել արժեք 3-րդ սյունակից:
Այս բանաձևը հիանալի է աշխատում 2-3 որոնման թերթերի համար: Եթե դուք ունեք ավելի շատ, կրկնվող IFERROR-ները չափազանց ծանր են դառնում: Հաջորդ օրինակը ցույց է տալիս մի փոքր ավելի բարդ, բայց շատ ավելի էլեգանտ մոտեցում:
Բազմաթիվ թերթեր INDIRECT-ով հավաքել
Excel-ում մի քանի թերթերի միջև Vlookup-ի ևս մեկ միջոց է օգտագործել VLOOKUP-ի և INDIRECT գործառույթներ. Այս մեթոդը պահանջում է մի փոքր նախապատրաստություն, բայց, ի վերջո, դուք կունենաք ավելի կոմպակտ բանաձև Vlookup-ի համար ցանկացած թվով աղյուսակներում:
Ընդհանուր բանաձևը Vlookup-ի համար թերթերի վրա հետևյալն է.
VLOOKUP( որոնման_արժեքը , INDIRECT("'"&INDEX( Փնտրման_թերթներ , MATCH(1, --(COUNTIF(INDIRECT("'" & Փնտրման_թերթներ & " '! որոնման_միջակայք "), որոնման_արժեքը )>0), 0)) & "'! աղյուսակ_զանգված "), col_index_num , FALSE)Որտեղ.
- Փնտրման_թերթեր - անվանված տիրույթ, որը բաղկացած է որոնման թերթի անուններից:
- Փնտրման_արժեքը - արժեք որոնելու համար:
- Փնտրման_տիրույթ - սյունակի տիրույթը որոնման թերթերում, որտեղ որոնելարժեքը:
- Սեղանի_զանգված - տվյալների տիրույթը որոնման թերթերում:
- Col_index_num - աղյուսակի զանգվածի սյունակի թիվը, որտեղից պետք է վերադարձրեք արժեք։
Որպեսզի բանաձևը ճիշտ աշխատի, խնդրում ենք նկատի ունենալ հետևյալ նախազգուշացումները.
- Դա զանգվածի բանաձև է, որը պետք է լրացվի՝ սեղմելով Ctrl + Shift + Enter ստեղները միասին:
- Բոլոր թերթերը պետք է ունենան սյունակների նույն հաջորդականությունը :
- Քանի որ մենք օգտագործում ենք մեկ աղյուսակի զանգված բոլոր որոնման թերթերի համար, նշեք ամենամեծ միջակայքը , եթե ձեր թերթերն ունեն տողերի տարբեր քանակ:
Ինչպես օգտագործել բանաձևը թերթերի միջով Vlookup-ի համար
Միաժամանակ մի քանի թերթ Vlookup-ի համար, կատարեք դրանք: քայլեր.
- Գրե՛ք բոլոր որոնման թերթերի անունները ձեր աշխատանքային գրքում և նշե՛ք այդ տիրույթը ( Որոնել_թերթերը մեր դեպքում):
- որոնելու ենք A2 արժեքը ( որոնման_արժեքը )
- A2:A6 ( որոնման_միջակայք ) միջակայքում չորս աշխատանքային թերթ ( Արևելք , Հյուսիս , Հարավ և Արևմուտք ), և
- հանեք համապատասխան արժեքները սյունակից B, որը 2-րդ սյունակն է ( col_index_num ) տվյալների տիրույթում A2:C6 ( աղյուսակ_զանգված ):
Վերոնշյալ փաստարկներով բանաձևը ստանում է հետևյալ ձևը.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Խնդրում ենք նկատի ունենալ, որ մենք կողպում ենք երկու միջակայքերը ($A$2:$A$6 և $A$2:$C$6) բացարձակ բջջային հղումներով:
Որպես արդյունքում՝ մենք ստացել ենք պատվերի համարը 4 թերթում փնտրելու և համապատասխան կետը գտնելու բանաձևը: Եթե պատվերի կոնկրետ համարը չի գտնվել, ապա ցուցադրվում է #N/A սխալ, ինչպես 14-րդ տողում.
Գումարը վերադարձնելու համար պարզապես փոխարինեք 2-ը 3-ով col_index_num-ում: փաստարկը, քանի որ գումարները գտնվում են աղյուսակի զանգվածի 3-րդ սյունակում.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)
Եթե ցանկանում եք փոխարինել ստանդարտ #N/A սխալի նշումը ձեր սեփական տեքստով, փաթեթավորեք բանաձևը IFNA ֆունկցիայի մեջ.
=IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Not found")
Բազմաթիվ թերթերի որոնում աշխատանքային գրքույկների միջև
Այս ընդհանուր բանաձևը (կամ դրա ցանկացած փոփոխություն) նույնպես կարող է օգտագործվել մի քանի թերթեր հավաքելու համար տարբեր աշխատանքային գրքում : Դրա համար աշխատանքային գրքի անունը միացրեք INDIRECT-ի ներսում, ինչպես ցույց է տրված ստորև բերված բանաձևում.
=IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Not found")
Փնտրեք թերթերի միջև և վերադարձրեք մի քանի սյունակ
Եթե ցանկանում եք տվյալներ հանել մի քանիից: սյունակներում, բազմաբջջային զանգվածի բանաձևը կարող է դա անել մեկ քայլով: Նման բանաձև ստեղծելու համար զանգվածի հաստատուն տրամադրեք col_index_num արգումենտի համար:
Այս օրինակում մենք ցանկանում ենք վերադարձնել ապրանքների անունները (սյունակ B) և գումարները (սյունակ C), որոնք աղյուսակի զանգվածի համապատասխանաբար 2-րդ և 3-րդ սյունակներն են: Այսպիսով, պահանջվող զանգվածն է{2,3}.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)
Բազմաթիվ բջիջներում բանաձևը ճիշտ մուտքագրելու համար անհրաժեշտ է անել հետևյալը.
- Առաջին շարքում, ընտրեք բոլոր բջիջները, որոնք պետք է լրացվեն (B2:C2 մեր օրինակում):
- Մուտքագրեք բանաձևը և սեղմեք Ctrl + Shift + Enter: Սա մուտքագրում է նույն բանաձևը ընտրված բջիջներում, որոնք կվերադարձնեն տարբեր արժեք յուրաքանչյուր սյունակում:
- Քաշեք բանաձևը մինչև մնացած տողերը:
Ինչպես է աշխատում այս բանաձևը
Տրամաբանությունը ավելի լավ հասկանալու համար եկեք բաժանենք այս հիմնական բանաձևը առանձին ֆունկցիաների՝
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Աշխատելով ներսից դուրս, ահա թե ինչ է անում բանաձևը.
COUNTIF և INDIRECT
Մի խոսքով, INDIRECT-ը կառուցում է հղումները բոլոր որոնման թերթերի համար, իսկ COUNTIF-ը հաշվում է որոնման դեպքերը: արժեքը (A2) յուրաքանչյուր թերթում՝
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Ավելի մանրամասն՝
Սկզբում դուք միացնում եք տիրույթի անունը (Lookup_sheets) և միջակայքի հղումը ($A$2: $A$6), ավելացնելով ապոստրոֆներ և բացականչություն ճիշտ տեղերում՝ արտաքին հղում անելու համար, և ստացված տեքստային տողը փոխանցեք INDIRECT ֆունկցիաին՝ դինամիկ կերպով հղում կատարելու որոնման թերթիկներին.
INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})
COUNTIF-ը ստուգում է A2:A6 տիրույթի յուրաքանչյուր բջիջ յուրաքանչյուր փնտրման թերթի վրա A2-ի արժեքի համեմատ հիմնականի վրա թերթիկ և վերադարձնում է յուրաքանչյուր թերթիկի համընկնումների քանակը: Մեր տվյալների բազայում A2 (101) պատվերի համարը գտնվում է West թերթում, որը 4-րդն է:անվանված միջակայք, ուստի COUNTIF-ը վերադարձնում է այս զանգվածը՝
{0;0;0;1}
Հաջորդում, դուք համեմատում եք վերը նշված զանգվածի յուրաքանչյուր տարր 0-ի հետ:
--({0; 0; 0; 1}>0)
Սա տալիս է TRUE (0-ից մեծ) և FALSE (հավասար է 0-ի) արժեքների զանգված, որը դուք պարտադրում եք 1-ին և 0-ին՝ օգտագործելով կրկնակի ունարի (--) և արդյունքում ստանում եք հետևյալ զանգվածը՝
{0; 0; 0; 1}
Այս գործողությունը լրացուցիչ նախազգուշական միջոց է այն իրավիճակում կարգավորելու համար, երբ որոնման թերթիկը պարունակում է որոնման արժեքի մի քանի երևույթներ, որոնց դեպքում COUNTIF-ը կվերադարձնի 1-ից մեծ քանակ, մինչդեռ մենք ուզում ենք միայն 1 և 0-եր: վերջնական զանգված (մի պահ կհասկանաք, թե ինչու):
Այս բոլոր փոխակերպումներից հետո մեր բանաձևն ունի հետևյալ տեսքը.
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX և MATCH
Այս պահին դասական INDEX MATCH համակցությունը քայլեր է ձեռնարկում հետևյալում.
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
MATCH ֆունկցիան, որը կազմաձևված է ճշգրիտ համընկնման համար (0-ը վերջին արգումենտում) որոնում է 1 արժեքը զանգվածում { 0;0;0;1} և վերադարձնում է իր դիրքը, որը 4 է:
INDEX(Lookup_sheets, 4)
INDEX ֆունկցիան օգտագործում է վերադարձված թիվը MATCH-ով որպես տողի համարի արգումենտ (տող_թիվ) և վերադարձնում է 4-րդ արժեքը նշված միջակայքում Փնտրման_թերթներ , որը Արևմուտք է:
Այսպիսով, բանաձևը հետագայում նվազեցնում է դեպի՝
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP և INDIRECT
INDIRECT ֆունկցիան մշակում է տեքստային տողը իր ներսում՝
INDIRECT("'"&"West"&"'!$A$2:$C$6")
Եվ փոխակերպում է այն հղում, որը գնում է table_array -ի արգումենտին