HASTEN: Tidlige adoptere bør kontrollere deres XLOOKUP-formler - Nyheder

Indholdsfortegnelse

Der skete en spændende ændring af XLOOKUP-funktionen i Office Insiders-opdateringen, der kom ud 1. november 2019. Mange Insiders vil modtage denne opdatering, når de ankommer til arbejde mandag 4. november 2019.

Hvis du har brugt den nye XLOOKUP-funktion, og hvis du har brugt Match_Mode-argumentet til at lede efter værdien, der er lige større eller bare mindre, vil dine eksisterende XLOOKUP-funktioner bryde sammen.

Den nye ændring til XLOOKUP: If_Not_Found-argumentet, som oprindeligt blev tilføjet som et valgfrit sjette argument, er flyttet til at være det fjerde argument.

Overvej følgende formel, som tidligere bad om den næste større match:

=XLOOKUP(A2,H2:H99,J2:J99,1)

Når du åbner en projektmappe med en formel som denne, går formlen ikke straks i stykker. Excels intelligente genberegning beregner ikke formlen igen, før du redigerer formlen, eller indtil du redigerer et af tallene i H2: H99 eller J2: J99.

Når du først har redigeret opslagstabellen, genberegner Excel dog alle de XLOOKUP-funktioner, der brugte tabellen. Før ændringen bad du om en omtrentlig kamp, ​​der returnerede den næste større værdi. Efter ændringen beder du om et nøjagtigt match (fordi din oprindelige formel ikke har et femte argument) og også ved et uheld angiver, at hvis et nøjagtigt match ikke findes, vil du i stedet indsætte en 1 som resultatet.

"Det er virkelig et snigende spil af whack-a-muldvarp," sagde Bill Jelen, udgiver af.com. Du trykker på F2 for at se på en formel, og formlen holder op med at arbejde. Andre formler i regnearket ser ud til at fortsætte med at arbejde, men de er en tikkende tidsbombe, der venter på at blive forkert, når en genberegning udløses. "

For at se ændringen ske, se fra 0:35 til 0:55 andet mærke i denne video:

Se video

Når du tilmelder dig Office Insiders-programmet, siger afsnit 7c i vilkårene og betingelser, at "Vi frigiver muligvis tjenesterne eller deres funktioner i en forhåndsvisning eller en betaversion, som muligvis ikke fungerer korrekt eller på samme måde som den endelige version muligvis fungerer . "

Excel-teamet anbefaler, at du skal justere alle XLOOKUP-formler, der brugte de valgfri argumenter. Hvis du har brugt XLOOKUP ofte, vil den følgende kode undersøge en projektmappe og identificere mulige problemformler.

Grundlæggende version

Den følgende kode søger efter formelcellerne, der starter med =XLOOKUPog indeholder mere end 2 kommaer.

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-version

Følgende kode bruger Regex til at finde flere XLOOKUP-funktioner, der bruges i den samme formel, eller som bruges sammen med andre funktioner, kan indeholde yderligere kommaer.

* Du skal tilføje Microsoft VBScript Regular Expressions-reference i Visual Basic for at bruge denne kode (Værktøjer> Referencer i 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

Interessante artikler...