Სარჩევი
გაკვეთილი გვიჩვენებს, თუ როგორ გამოვიყენოთ VLOOKUP ფუნქცია სხვა სამუშაო ფურცლის ან სამუშაო წიგნის მონაცემების დასაკოპირებლად, Vlookup მრავალ ფურცელში და დინამიურად მოძებნოთ სხვადასხვა ფურცლებიდან სხვადასხვა უჯრედებში მნიშვნელობების დასაბრუნებლად.
Excel-ში გარკვეული ინფორმაციის მოძიებისას, იშვიათი შემთხვევაა, როდესაც ყველა მონაცემი ერთსა და იმავე ფურცელზეა. უფრო ხშირად მოგიწევთ მოძებნოთ რამდენიმე ფურცელი ან თუნდაც სხვადასხვა სამუშაო წიგნაკი. კარგი ამბავი ის არის, რომ Microsoft Excel გთავაზობთ ერთზე მეტ გზას ამის გასაკეთებლად და ცუდი ამბავი ის არის, რომ ყველა გზა ცოტა უფრო რთულია, ვიდრე სტანდარტული VLOOKUP ფორმულა. მაგრამ ცოტა მოთმინებით, ჩვენ გავარკვევთ მათ :)
როგორ გავაკეთოთ VLOOKUP ორ ფურცელს შორის
დაწყებისთვის, მოდით გამოვიკვლიოთ უმარტივესი შემთხვევა - VLOOKUP-ის გამოყენებით დააკოპირეთ მონაცემები სხვა სამუშაო ფურცლიდან. ის ძალიან ჰგავს ჩვეულებრივ VLOOKUP ფორმულას, რომელიც ეძებს იმავე სამუშაო ფურცელზე. განსხვავება ისაა, რომ თქვენ ჩართავთ ფურცლის სახელს table_array არგუმენტში, რათა უთხრათ თქვენს ფორმულას, რომელ სამუშაო ფურცელში მდებარეობს საძიებო დიაპაზონი.
ზოგადი ფორმულა VLOOKUP-ისთვის სხვა ფურცლიდან არის შემდეგი:
VLOOKUP(lookup_value, Sheet!range, col_index_num, [range_lookup])მაგალითად, მოდით გამოვიყვანოთ გაყიდვების მაჩვენებლები იანვრის ანგარიშიდან შეჯამება ფურცელი. ამისათვის ჩვენ განვსაზღვრავთ შემდეგ არგუმენტებს:
- Lookup_values არის A სვეტში Summary ფურცელზე, და ჩვენVLOOKUP:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
ბოლოს, ეს ძალიან სტანდარტული VLOOKUP ფორმულა ეძებს A2 მნიშვნელობას A2:C6 დიაპაზონის პირველ სვეტში West ფურცელზე და აბრუნებს მატჩი მე-2 სვეტიდან. სულ ეს არის!
დინამიური VLOOKUP მონაცემების დასაბრუნებლად მრავალი ფურცლიდან სხვადასხვა უჯრედებში
პირველ რიგში, მოდით განვსაზღვროთ რას ნიშნავს ზუსტად სიტყვა "დინამიური" ამ კონტექსტში და როგორი იქნება ეს ფორმულა. განსხვავდება წინადან.
იმ შემთხვევაში, თუ თქვენ გაქვთ მონაცემთა დიდი ნაწილი იმავე ფორმატში, რომლებიც იყოფა რამდენიმე ელცხრილზე, შეიძლება დაგჭირდეთ ინფორმაციის ამოღება სხვადასხვა ფურცლებიდან სხვადასხვა უჯრედებში. ქვემოთ მოცემული სურათი ასახავს კონცეფციას:
წინა ფორმულებისგან განსხვავებით, რომლებიც იღებდნენ მნიშვნელობას კონკრეტული ფურცლიდან უნიკალურ იდენტიფიკატორზე დაყრდნობით, ამჯერად ჩვენ ვცდილობთ გამოვყოთ მნიშვნელობები რამდენიმე ფურცლიდან. დრო.
ამ ამოცანის ორი განსხვავებული გამოსავალი არსებობს. ორივე შემთხვევაში, თქვენ უნდა გააკეთოთ მცირე მოსამზადებელი სამუშაო და შექმნათ დასახელებული დიაპაზონები მონაცემთა უჯრედებისთვის თითოეულ საძიებო ფურცელში. ამ მაგალითისთვის, ჩვენ განვსაზღვრეთ შემდეგი დიაპაზონები:
- East_Sales - A2:B6 East sheet-ზე
- North_Sales - A2: B6 ჩრდილოეთ ფურცელზე
- South_Sales - A2:B6 სამხრეთ ფურცელზე
- West_Sales - A2:B6 დასავლეთის ფურცელზე
VLOOKUP და ჩადგმული IF-ები
თუ თქვენ გაქვთ საკმარისი რაოდენობის ფურცლები მოსაძებნად, შეგიძლიათ გამოიყენოთ ჩადგმული 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 ნაწილი იკითხება:
Იხილეთ ასევე: Excel ფილტრი: როგორ დავამატოთ, გამოვიყენოთ და წაშალოთთუ B1 არის აღმოსავლეთი , შეხედეთ დიაპაზონს სახელად East_Sales ; თუ B1 არის ჩრდილოეთი , შეხედეთ დიაპაზონს სახელად North_Sales ; თუ B1 არის სამხრეთი , შეხედეთ დიაპაზონს სახელად South_Sales ; და თუ B1 არის West , შეხედეთ დიაპაზონს სახელად West_Sales .
IF-ის მიერ დაბრუნებული დიაპაზონი გადადის VLOOKUP-ის table_array -ზე, რომელიც იზიდავს შესაბამისი მნიშვნელობა მე-2 სვეტიდან შესაბამის ფურცელზე.
შერეული მითითებების ჭკვიანური გამოყენება საძიებელი მნიშვნელობისთვის ($A2 - აბსოლუტური სვეტი და ფარდობითი მწკრივი) და IF-ის ლოგიკური ტესტი (B$1 - ფარდობითი სვეტი და აბსოლუტური მწკრივი) საშუალებას გაძლევთ დააკოპიროთ ფორმულა სხვა უჯრედებში ყოველგვარი ცვლილების გარეშე - Excel ავტომატურად არეგულირებს მითითებებს მწკრივისა და სვეტის შედარებითი პოზიციიდან გამომდინარე.
ასე რომ, შევიყვანთ ფორმულას B2-ში, ვაკოპირებთ მარჯვნივ და იმდენ სვეტამდე და სტრიქონამდე, რამდენიც საჭიროა და მიიღეთ შემდეგი შედეგი:
INDIRECT VLOOKUP
ბევრ ფურცელთან მუშაობისას, რამდენიმე ჩადგმულ დონეს შეუძლია შექმნას ფორმულაც გრძელი და რთული წასაკითხი. ბევრად უკეთესი გზაა შექმნათ დინამიური vlookup დიაპაზონი INDIRECT-ის დახმარებით:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
აქ, ჩვენ ვუკავშირებთ მითითებას უჯრედს, რომელიც შეიცავსდასახელებული დიაპაზონის უნიკალური ნაწილი (B1) და საერთო ნაწილი (_გაყიდვები). ეს აწარმოებს ტექსტის სტრიქონს, როგორიცაა "East_Sales", რომელსაც INDIRECT გარდაქმნის დიაპაზონის სახელად, რომელიც გასაგებია Excel-ისთვის.
შედეგად, თქვენ მიიღებთ კომპაქტურ ფორმულას, რომელიც ლამაზად მუშაობს ნებისმიერი რაოდენობის ფურცელზე:
ასე ხდება Excel-ში ფურცლებსა და ფაილებს შორის Vlookup. გმადლობთ, რომ წაიკითხეთ და იმედი მაქვს, რომ მომავალ კვირას გნახავთ ჩვენს ბლოგზე!
სავარჯიშო სამუშაო წიგნი ჩამოსატვირთად
Vlookup მრავალი ფურცლის მაგალითები (ფაილი .xlsx)
მიმართეთ პირველ მონაცემთა უჯრედს, რომელიც არის A2. - Table_Array არის დიაპაზონი A2:B6 Jan ფურცელზე. მასზე მითითებისთვის, დაწერეთ დიაპაზონის მითითება ფურცლის სახელთან, რასაც მოჰყვება ძახილის წერტილი: 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 სხვა სამუშაო წიგნიდან
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 მცდარი საძიებელი მნიშვნელობა.იმისთვის, რომ ფორმულა სწორად იმუშაოს, გთხოვთ, გაითვალისწინოთ შემდეგი გაფრთხილებები:
- ეს არის მასივის ფორმულა, რომელიც უნდა დასრულდეს Ctrl + დაჭერით. Shift + Enter ერთად>ყველაზე დიდი დიაპაზონი თუ თქვენს ფურცლებს აქვთ მწკრივების განსხვავებული რაოდენობა.
როგორ გამოვიყენოთ ფორმულა ფურცლებზე გადასატანად
მრავალი ფურცლის ერთდროულად გადასახედად, შეასრულეთ ეს ნაბიჯები:
- ჩაწერეთ ყველა საძიებო ფურცლის სახელები სადმე თქვენს სამუშაო წიგნში და დაასახელეთ ეს დიაპაზონი ( Lookup_sheets ჩვენს შემთხვევაში).
- ვეძებთ A2 მნიშვნელობას ( ძიების_მნიშვნელობა )
- A2:A6 დიაპაზონში ( ძიების_დიაპაზონი ) ოთხი სამუშაო ფურცელი ( აღმოსავლეთი , ჩრდილოეთი , სამხრეთი და დასავლეთი ) და
- გამოიტანეთ შესაბამისი მნიშვნელობები სვეტიდან B, რომელიც არის სვეტი 2 ( col_index_num ) მონაცემთა დიაპაზონში A2:C6 ( table_array ).
ზემოაღნიშნული არგუმენტებით ფორმულა იღებს ამ ფორმას:
=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")
მრავალი ფურცლის მოძიება სამუშაო წიგნებს შორის
ეს ზოგადი ფორმულა (ან მისი ნებისმიერი ვარიაცია) ასევე შეიძლება გამოყენებულ იქნას რამდენიმე ფურცლის Vlooup სხვადასხვა სამუშაო წიგნში . ამისათვის შეაერთეთ სამუშაო წიგნის სახელი 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-ით, როგორც რიგის ნომრის არგუმენტი (row_num) და აბრუნებს მე-4 მნიშვნელობას დასახელებულ დიაპაზონში Lookup_sheets , რომელიც არის West .
ასე რომ, ფორმულა კიდევ უფრო ამცირებს to:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP და INDIRECT
INDIRECT ფუნქცია ამუშავებს ტექსტის სტრიქონს მის შიგნით:
INDIRECT("'"&"West"&"'!$A$2:$C$6")
და გარდაქმნის მას მინიშნებაში, რომელიც მიდის table_array არგუმენტზე