Узбудљива промена догодила се у функцији КСЛООКУП у ажурирању Оффице Инсидерс које је изашло 1. новембра 2019. Многи инсајдери ће добити ово ажурирање чим стигну на посао у понедељак 4. новембра 2019.
Ако сте користили нову КСЛООКУП функцију и ако сте користили аргумент Матцх_Моде да бисте тражили само већу или мању вредност, ваше постојеће КСЛООКУП функције ће се покварити.
Нова промена у КСЛООКУП: аргумент Иф_Нот_Фоунд, који је првобитно додан као опционални шести аргумент, премештен је у четврти аргумент.
Узмите у обзир следећу формулу која је претходно тражила следеће веће подударање:
=XLOOKUP(A2,H2:H99,J2:J99,1)
Када отворите радну свеску са оваквом формулом, формула се не прекида одмах. Екцел-ов интелигентни подсјетник неће се присјетити формуле док не уредите формулу или док не уредите један од бројева у Х2: Х99 или Ј2: Ј99.
Међутим, након што уредите табелу за преглед, Екцел поново подсећа на све функције КСЛООКУП које су користиле табелу. Пре промене тражили сте приближно приближавање које је вратило следећу већу вредност. Након промене, тражите тачно подударање (јер ваша оригинална формула нема пети аргумент), а такође случајно наводите да ако не пронађете тачно подударање, уместо тога желите да убаците 1 као резултат.
„То је заиста подмукла игра лупета“, рекао је Билл Јелен, издавач оф.цом. Притисните Ф2 да бисте погледали формулу и она престаје да делује. Друге формуле у радном листу могу изгледати да и даље раде, али оне су откуцавајућа темпирана бомба која чека да погреши када се покрене поновни поступак. "
Да бисте видели како се промена дешава, гледајте од 0:35 до 0:55 секунде у овом видео снимку:
Погледајте видео
Када се региструјете за програм Оффице Инсидерс, став 7ц Услова и одредби каже да „Услуге или њихове функције можемо објавити у прегледу или бета верзији, што можда неће радити исправно или на исти начин како коначна верзија може функционисати . "
Екцел тим саветује да треба да прилагодите било које КСЛООКУП формуле које су користиле опционалне аргументе. Ако често користите КСЛООКУП, следећи код ће испитати радну свеску и идентификовати могуће формуле проблема.
Основна верзија
Следећи код тражи ћелије формуле које почињу са =XLOOKUP
и садрже више од 2 зареза.
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
Регек верзија
Следећи код користи Регек за проналажење више КСЛООКУП функција које се користе у истој формули или се користе са другим функцијама, а могу садржати додатне зарезе.
* Да бисте користили овај код (Алати> Референце у ВБА), морате додати референцу регуларних израза Мицрософт ВБСцрипт у Висуал Басиц.
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