1. marraskuuta 2019 julkaistun Office Insider -päivityksen XLOOKUP-toiminnolle tapahtui jännittävä muutos. Monet sisäpiiriläiset saavat tämän päivityksen saapuessaan töihin maanantaina 4. marraskuuta 2019.
Jos olet käyttänyt uutta XLOOKUP-toimintoa ja jos olet käyttänyt Match_Mode-argumenttia etsimään arvoa vain suuremmaksi tai pienemmäksi, nykyiset XLOOKUP-funktiosi hajoavat.
Uusi muutos XLOOKUP: iin: If_Not_Found-argumentti, joka lisättiin alun perin valinnaisena kuudennena argumenttina, on siirretty neljänneksi argumentiksi.
Harkitse seuraavaa kaavaa, joka aiemmin vaati seuraavaa suurempaa ottelua:
=XLOOKUP(A2,H2:H99,J2:J99,1)
Kun avaat työkirjan tällaisella kaavalla, kaava ei hajoa välittömästi. Excelin älykäs uudelleenlaskenta ei laske kaavaa uudelleen, ennen kuin muokkaat kaavaa tai kunnes muokkaat yhtä numerosta H2: H99 tai J2: J99.
Kuitenkin, kun muokkaat hakutaulukkoa, Excel laskee uudelleen kaikki taulukkoa käyttäneet XLOOKUP-toiminnot. Ennen muutosta pyysit likimääräistä ottelua, joka palautti seuraavan suuremman arvon. Muutoksen jälkeen pyydät tarkkaa vastaavuutta (koska alkuperäisellä kaavallasi ei ole viides argumenttia) ja määrität vahingossa myös, että jos tarkkaa vastaavuutta ei löydy, haluat lisätä tulokseen 1.
"Se on oikeastaan salakavalaa moolin moolia", sanoi.com kustantaja Bill Jelen. Painamalla F2 voit tarkastella kaavaa, ja kaava lakkaa toimimasta. Muut laskentataulukon kaavat saattavat näyttää toimivan edelleen, mutta ne ovat tikittävä aikapommi, joka odottaa väärin, kun uudelleenlaskenta käynnistetään. "
Katso muutos tapahtumasta katsomalla tämän videon 0: 35: stä 0: 55: n toiseen merkkiin:
Katso video
Kun kirjaudut Office Insiders -ohjelmaan, käyttöehtojen kohdassa 7c sanotaan, että "Voimme julkaista Palvelut tai niiden ominaisuudet esikatseluna tai beetaversiona, mikä ei välttämättä toimi oikein tai samalla tavalla kuin lopullinen versio voi toimia "
Excel-tiimi neuvoo, että sinun on mukautettava kaikki XLOOKUP-kaavat, jotka käyttivät valinnaisia argumentteja. Jos olet käyttänyt XLOOKUPia usein, seuraava koodi tutkii työkirjan ja tunnistaa mahdolliset ongelmakaavat.
Perusversio
Seuraava koodi etsii kaavasoluja, jotka alkavat =XLOOKUP
ja sisältävät enemmän kuin 2 pilkua.
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-versio
Seuraava koodi käyttää Regexiä useiden XLOOKUP-funktioiden etsimiseen, joita käytetään samassa kaavassa tai joita käytetään muiden toimintojen kanssa, voi olla muita pilkkuja.
* Sinun on lisättävä Visual Basiciin Microsoftin VBScript-säännöllisten lausekkeiden viite, jotta voit käyttää tätä koodia (Työkalut> Viitteet VBA: ssa).
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