Vznemirljiva sprememba funkcije XLOOKUP se je zgodila v posodobitvi Office Insiders, ki je izšla 1. novembra 2019. Številni poznavalci bodo to posodobitev prejeli ob prihodu v službo v ponedeljek, 4. novembra 2019.
Če ste uporabljali novo funkcijo XLOOKUP in če ste z argumentom Match_Mode iskali vrednost, ki je le večja ali manjša, se bodo vaše obstoječe funkcije XLOOKUP pokvarile.
Nova sprememba v XLOOKUP: argument If_Not_Found, ki je bil prvotno dodan kot neobvezni šesti argument, je bil premaknjen v četrti argument.
Upoštevajte naslednjo formulo, ki je prej zahtevala naslednje večje ujemanje:
=XLOOKUP(A2,H2:H99,J2:J99,1)
Ko odprete delovni zvezek s takšno formulo, se formula ne zlomi takoj. Excelov inteligentni ponovni vnos ne bo priklical formule, dokler ne uredite formule ali dokler ne uredite ene od številk v H2: H99 ali J2: J99.
Ko pa uredite iskalno tabelo, Excel pokliče vse funkcije XLOOKUP, ki so uporabljale tabelo. Pred spremembo ste zahtevali približno ujemanje, ki je vrnilo naslednjo večjo vrednost. Po spremembi zahtevate natančno ujemanje (ker vaša prvotna formula nima petega argumenta) in tudi pomotoma določite, da če natančnega ujemanja ne najdete, namesto tega kot rezultat vstavite 1.
"To je res zahrbtna igra," je dejal Bill Jelen, založnik of.com. Pritisnite F2, da si ogledate formulo, in formula preneha delovati. Zdi se, da druge formule na delovnem listu še naprej delujejo, vendar gre za utripajočo časovno bombo, ki čaka, da postane napačna, ko se sproži ponovni vnos. "
Če si želite ogledati spremembe, si oglejte od 0:35 do 0:55 sekunde v tem videoposnetku:
Oglejte si video
Ko se prijavite za program Office Insiders, odstavek 7c Pravil in pogojev pravi: "Storitve ali njihove funkcije lahko objavimo v predogledu ali različici beta, ki morda ne bo delovala pravilno ali pa bo delovala tudi končna različica . "
Skupina Excel svetuje, da morate prilagoditi vse formule XLOOKUP, ki so uporabljale neobvezne argumente. Če XLOOKUP uporabljate pogosto, bo naslednja koda preučila delovni zvezek in opredelila možne formule težav.
Osnovna različica
Naslednja koda išče celice formule, ki se začnejo =XLOOKUP
in vsebujejo več kot 2 vejic.
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
Različica regularnih izrazov
Naslednja koda uporablja Regex za iskanje več funkcij XLOOKUP, ki se uporabljajo v isti formuli ali se uporabljajo z drugimi funkcijami, lahko vsebujejo dodatne vejice.
* Za uporabo te kode morate dodati sklic na regularne izraze Microsoft VBScript v Visual Basic (Orodja> Reference v VBA).
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