Uzbudljiva promjena dogodila se u funkciji XLOOKUP u ažuriranju Office Insiders koje je izašlo 1. studenog 2019. Mnogi će upućeni primati ovo ažuriranje kad stignu na posao u ponedjeljak 4. studenog 2019.
Ako ste koristili novu funkciju XLOOKUP i ako ste koristili argument Match_Mode za traženje vrijednosti samo veće ili samo manje, vaše postojeće XLOOKUP funkcije će se slomiti.
Nova promjena u XLOOKUP: argument If_Not_Found, koji je izvorno dodan kao neobavezni šesti argument, premješten je u četvrti argument.
Razmotrite sljedeću formulu koja je prethodno tražila sljedeće veće podudaranje:
=XLOOKUP(A2,H2:H99,J2:J99,1)
Kada otvorite radnu knjigu s ovakvom formulom, formula se ne razbija odmah. Excelov inteligentni podsjetnik neće se prisjetiti formule dok ne uredite formulu ili dok ne uredite jedan od brojeva u H2: H99 ili J2: J99.
Međutim, nakon što uredite tablicu pretraživanja, Excel će opozoriti sve funkcije XLOOKUP-a koje su koristile tablicu. Prije promjene tražili ste približno podudaranje koje je vratilo sljedeću veću vrijednost. Nakon promjene tražite Točno podudaranje (jer vaša izvorna formula nema peti argument), a također slučajno odredite da ako točno rezultat ne bude pronađen, umjesto toga želite umetnuti 1 kao rezultat.
"To je stvarno podmukla igra lupeta", rekao je Bill Jelen, izdavač of.com. Pritisnite F2 da biste pogledali formulu i ona prestaje raditi. Ostale formule na radnom listu mogu izgledati da i dalje rade, ali one su otkucavajuća tempirana bomba koja čeka da postane pogrešna kada se pokrene ponovni postupak. "
Da biste vidjeli kako se promjena događa, gledajte od 0:35 do 0:55 sekunde u ovom videozapisu:
Gledaj video
Kada se prijavite za program Office Insiders, stavak 7c Uvjeta i odredbi kaže da "Usluge ili njihove značajke možemo objaviti u pregledu ili beta verziji, što možda neće raditi ispravno ili na isti način kako konačna verzija može raditi . "
Excelov tim savjetuje da trebate prilagoditi sve formule XLOOKUP koje su koristile neobavezne argumente. Ako često upotrebljavate XLOOKUP, sljedeći će kôd ispitati radnu knjigu i identificirati moguće formule problema.
Osnovna inačica
Sljedeći kod traži ćelije formule koje počinju sa =XLOOKUP
i sadrže više od 2 zareza.
Sub findXLOOKUPs() Dim sht As Worksheet Dim cll As Range Dim foundCells As String Set sht = ActiveSheet For Each cll In sht.UsedRange If cll.HasFormula Then If InStr(cll.Formula, "=XLOOKUP") = 1 Then If UBound(Split(cll.Formula, ","))> 2 Then foundCells = foundCells & vbCrLf & cll.Address End If End If End If Next cll If foundCells = "" Then MsgBox sht.Name & " is not affected with XLOOKUP function structure update.", vbOKOnly + vbInformation, "No errors" Else MsgBox sht.Name & " is likely affected with XLOOKUP function structure update. Please check formulas in the following cells:" & foundCells, vbOKOnly + vbExclamation, "Error(s) found" End If End Sub
Regex verzija
Sljedeći kod koristi Regex za pronalaženje višestrukih XLOOKUP funkcija korištenih u istoj formuli ili korištenih s drugim funkcijama, može sadržavati dodatne zareze.
* Da biste koristili ovaj kod (Morate dodati reference u VBA), morate dodati referencu regularnih izraza Microsoft VBScript u Visual Basic.
Sub advancedFindXLOOKUPs() Dim sht As Worksheet Dim cll As Range Dim rgx As RegExp Dim rMatches As Object Dim rMatch As Object Dim foundCells As String Set sht = ActiveSheet Set rgx = New RegExp With rgx .Pattern = "XLOOKUP(((^,))*,)(3,)(^,)*)" .MultiLine = False .IgnoreCase = True .Global = True End With For Each cll In sht.UsedRange If cll.HasFormula Then Set rMatches = rgx.Execute(cll.Formula) If rMatches.Count Then For Each rMatch In rMatches 'Debug.Print rMatch foundCells = foundCells & vbCrLf & cll.Address Next rMatch End If End If Next cll If foundCells = "" Then MsgBox sht.Name & " is not affected with XLOOKUP function structure update.", vbOKOnly + vbInformation, "No errors" Else MsgBox sht.Name & " is likely affected with XLOOKUP function structure update. Please check formulas in the following cells:" & foundCells, vbOKOnly + vbExclamation, "Error(s) found" End If End Sub