Excel UDF ئىشلىمەيدۇ: مەسىلە ۋە ھەل قىلىش چارىسى

  • ھەمبەھىرلەڭ
Michael Brown

بۇ ماقالىدە خىزمەت دەپتىرىڭىزدىكى ئىختىيارى ئىقتىدارلارنى ئىشلەتكەندە دۇچ كېلىدىغان مەسىلىلەرنى كۆرۈپ ئۆتىمىز. مەن ئۇلارغا نېمە سەۋەب بولۇۋاتقانلىقىنى ۋە ئۇلارنىڭ قانداق ئاسان ھەل قىلىنىدىغانلىقىنى كۆرسىتىشكە تىرىشىمەن.

بۇ يەردە بىز سۆزلەيدىغىنىمىز:

ئىختىيارى ئىقتىدار ، ئۇنى قانداق قۇرۇش ۋە ئىشلىتىش. ئەگەر سىز UDF لارنىڭ ئاساسىي بىلىملىرىنى ئالدىن يېڭىلاشقا ئېھتىياجلىقدەك ھېس قىلسىڭىز ، بىر ئاز توختاپ ، ئالدىنقى ماقالىمنى كۆرۈپ بېقىڭ.

نېمىشقا Excel UDF قايتا ھېسابلانمايدۇ؟

ھەر قانداق ئۆزگەرتىش كىرگۈزگەندە خىزمەت دەپتىرىڭىز ، Excel ئۇ يەردىكى ھەر بىر فورمۇلانى قايتا ھېسابلىمايدۇ. ئۇ پەقەت ئۆزگەرتىلگەن كاتەكچىلەرگە ئۇلانغان بۇ فورمۇلالارنىڭ نەتىجىسىنى يېڭىلايدۇ.

ئەمما بۇ ئۆلچەملىك Excel ئىقتىدارلىرىغا مۇناسىۋەتلىك. ئىختىيارىيلارغا كەلسەك ، Excel VBA كودىنى دەلىللىيەلمەيدۇ ۋە ئىختىيارى ئىقتىدارنىڭ نەتىجىسىگە تەسىر كۆرسىتىدىغان باشقا ھۈجەيرىلەرنى پەرقلەندۈرەلمەيدۇ. شۇڭلاشقا ، خىزمەت دەپتىرىگە ئۆزگەرتىش كىرگۈزگەندە ئىختىيارى فورمۇلاڭىز ئۆزگەرمەسلىكى مۇمكىن.

مەسىلىنى ھەل قىلىش ئۈچۈن ، سىز پەقەت قوللىنىشچان پروگرامما. كېيىنكى بابنى تەكشۈرۈپ ، ئۇنى قانداق ئىشلىتىش توغرىسىدىكى باسقۇچلۇق كۆرسەتمىلەرنى ئۆگۈنۈڭ. دېمەك ، UDF ئۇ تىلغا ئالغان ھەر قانداق ھۈجەيرىلەرنىڭ قىممىتى ئۆزگەرگەندىلا ئاندىن قايتا ھېسابلىنىدۇ. ئەمما كاتەكچىلەرنىڭ فورماتى بولسا ،خىزمەت جەدۋىلى ، ھۆججەتنىڭ ئىسمى ئۆزگىرىدۇ ، ئاندىن UDF دا ھېچقانداق ئۆزگىرىش بولمايدۇ.

سۆزدىن مىسالغا ئۆتەيلى. مەسىلەن ، خىزمەت دەپتىرىڭىزنىڭ ئىسمىنى كاتەكچىگە يېزىشىڭىز كېرەك. بۇنى قىلىش ئۈچۈن سىز بىر ئىختىيارى ئىقتىدار قۇرىسىز:

ئىقتىدار خىزمەت دەپتىرى ئىسمى () تىزىلغان خىزمەت دەپتىرى ئىسمى = بۇ خىزمەت دەپتىرى. ئىسىم ئاخىرلىشىش ئىقتىدارى

ھازىر تۆۋەندىكى ئەھۋالنى تەسەۋۋۇر قىلىپ بېقىڭ. كاتەكچىگە خاس فورمۇلا = WorkbookName () نى يېزىپ ھۆججەت نامىنى شۇ يەرگە ئالدىڭىز. بىر ئازدىن كېيىن ، ھۆججەتنىڭ نامىنى ئۆزگەرتىشنى قارار قىلىپ ، ئۇنى باشقا ئىسىم بىلەن ساقلىدىڭىز. ئەمما سىز كاتەكچىدىكى قىممەتكە قاراپ ، ئۇنىڭ ئۆزگەرمىگەنلىكىنى كۆرىسىز. ھازىرچە توغرا بولمىغان كونا ھۆججەت ئىسمى بار.

بۇ ئىقتىداردا تالاش-تارتىش بولمىغاچقا ، ئىقتىدار قايتا ھېسابلانمايدۇ (خىزمەت دەپتىرىنىڭ نامىنى ئۆزگەرتسىڭىزمۇ ، ئۇنى تاقاپ ئاندىن قايتا ئېچىڭ) ئۇ).

ئەسكەرتىش. ھۆججىتىڭىزدىكى بارلىق ئىقتىدارلارنى قايتا ھېسابلاش ئۈچۈن ، Ctrl + Alt + F9 تېزلەتمىسىنى ئىشلەتسىڭىز بولىدۇ.

ئاسانراق يول بارمۇ؟ فورمۇلانى ھەر قېتىم خىزمەت جەدۋىلى ئۆزگەرگەندە قايتا ھېسابلاش ئۈچۈن ، قوشۇمچە كودقا ئېھتىياجلىق بولىسىز. فۇنكسىيەڭىزنىڭ بېشىدا تۆۋەندىكى كودنى چاپلاڭ:

قوللىنىشچان پروگرامما. خىزمەت دەپتىرى () تىزىلغان قوللىنىشچان پروگرامما سۈپىتىدە. Volatile WorkbookName = ThisWorkbook.Name ئاخىرلىشىش ئىقتىدارى

ھازىر سىزنىڭ UDF تۇراقسىز ، شۇڭلاشقا خىزمەت جەدۋىلىدىكى ھەر قانداق ھۈجەيرە ئاپتوماتىك قايتا ھېسابلىنىدۇ.قايتا ھېسابلاندى ياكى خىزمەت دەپتىرىدە ئۆزگىرىش بولدى. ھۆججەتنىڭ نامىنى ئۆزگەرتسىڭىزلا ، ئۇ يېڭىلاشنى دەرھال كۆرىسىز.

ئەسكەرتىش. ئېسىڭىزدە تۇتۇڭ ، بەك كۆپ تۇراقسىز ئىقتىدار Excel نى ئاستىلىتىدۇ. نېمىلا دېگەن بىلەن ، مۇرەككەپ ھېسابلاش ئېلىپ بارىدىغان ۋە توختىماي چوڭ سانلىق مەلۇمات دائىرىسىدە مەشغۇلات قىلىدىغان خاس ئىقتىدارلار بەك كۆپ.

شۇڭلاشقا ، تەۋرىنىشنى ھەقىقىي ئېھتىياجلىق بولغان يەردىلا ئىشلىتىشنى تەۋسىيە قىلىمەن. كىرگۈزۈش كاتەكچىسىنىڭ يېنىدىكى ئېسىلما تىزىملىكتە ، ئۆلچەملىك Excel ئىقتىدارلىرىغا ئوخشاش.

ئەمما ، بۇ دائىم يۈز بەرمەيدۇ. قايسى خاتالىقلار بۇ ئەھۋالنى كەلتۈرۈپ چىقىرىدۇ؟

ئەگەر سىزدە Excel 2003-2007 بولسا ، UDF ھەرگىزمۇ چۈشۈش تىزىملىكىدە كۆرۈنمەيدۇ. ئۇ يەردە سىز پەقەت ئۆلچەملىك ئىقتىدارلارنىلا كۆرەلەيسىز.

ئەمما سىز Excel نىڭ يېڭى نەشرىنى ئىشلىتىۋاتقان بولسىڭىزمۇ ، ئېھتىياتسىزلىقتىن سادىر قىلىدىغان يەنە بىر خاتالىق بار. Modules دەپ ئاتىلىدىغان ئۆلچەملىك VBA مودۇلى. ئىقتىدار كودى يېزىش ئۈچۈن يېڭى مودۇل قوشسىڭىز ، بارلىق مودۇللار يېزىلغان مودۇل ھۆججەت قىسقۇچى ئاپتوماتىك قۇرۇلدى.

ئەمما بەزىدە يېڭى مودۇل بولمىغان ئەھۋال يۈز بېرىدۇ يارىتىلىش. كېيىنكى ئېكران رەسىمىدە ئىختىيارى ئىقتىدار كودىنىڭ «Microsoft Excel ئوبيېكتى» مودۇلىدا ئىكەنلىكىنى كۆرەلەيسىزبۇ خىزمەت دەپتىرى. بۇ خىل ئەھۋالدا ئىقتىدار ئىشلىمەيدۇ. ئۇنىڭ ئۈستىگە ، ئۇ ئىقتىدارلارنىڭ تىزىملىك ​​تىزىملىكىدە كۆرۈنمەيدۇ. شۇڭلاشقا ، كود ھەمىشە بۆلەكلەر ھۆججەت قىسقۇچىدا بولۇشى كېرەك.

Excel ئىختىيارى ئىقتىدار ياردەم تېكىستى كۆرۈنمەيدۇ ئىختىيارى ئىقتىدار. ئەگەر ئۆلچەملىك ئىقتىدار ئىشلەتسىڭىز ، بۇ ئىقتىدار ۋە ئۇنىڭ تالاش-تارتىشلىرى ئۈچۈن قورال قوراللىرىنى ھەمىشە كۆرىسىز. ئەمما UDF لارچۇ؟ قايسى تالاش-تارتىشلارنى ئىشلىتىشنى ئەستە تۇتۇش تېخىمۇ تەس. مېنىڭچە ، ئۆزىڭىزنىڭ فۇنكسىيەلىرىڭىزنى ئەسكەرتىش سۈپىتىدە تەسۋىرلەش ياخشى پىكىر بولىدۇ.

بۇنىڭ ئۈچۈن ، Application.MacroOptions ئۇسۇلىنى قوللىنىشنى تەۋسىيە قىلىمەن. ئۇ ئىقتىدار ئىقتىدار كۆزنىكىدىكى ئىقتىدارنىڭلا ئەمەس ، بەلكى ئۇنىڭ ھەر بىر تالاش-تارتىشلىرىنىڭ چۈشەندۈرۈشىنىمۇ كۆرسىتىپ بېرىدۇ. فورمۇلا ستونىدىكى Fx كۇنۇپكىسىنى باسسىڭىز بۇ كۆزنەكنى كۆرىسىز. ئالدىنقى ماقالىمىزدا GetMaxBetween ئىختىيارى ئىقتىدارنى كۆردۇق. ئۇ بەلگىلەنگەن دائىرىدە ئەڭ چوڭ ساننى تاپىدۇ ۋە ئۈچ خىل تالاش-تارتىشنى ئالىدۇ: بىر قاتار سانلىق قىممەتلەر ، ھەمدە ئەڭ چوڭ ۋە ئەڭ تۆۋەن قىممەتئىزدەڭ.

ھازىر بىز بۇ ئىختىيارى ئىقتىدارغا چۈشەنچە قوشىمىز. بۇنىڭ ئۈچۈن Application.MacroOptions بۇيرۇقىنى قۇرالايسىز ۋە ئىجرا قىلىڭ. GetMaxBetween فۇنكسىيەسى ئۈچۈن ، تۆۋەندىكى بۇيرۇقنى ئىجرا قىلالايسىز:

Sub RegisterUDF () Dim strFuncName As String 'فۇنكسىيەنىڭ Dim strDescr نى String' تىزىملىماقچى بولغان ئىقتىدارنىڭ ئىسمى. ئۆزى Dim strArgs () String سۈپىتىدە فۇنكسىيە تالاش-تارتىشلىرىنىڭ چۈشەندۈرۈشى 'GetMaxBetween فۇنكسىيە ReDim strArgs (1 دىن 3 گىچە)' فۇنكىسىيەڭىزدىكى تالاش-تارتىش سانى strFuncName = "GetMaxBetween" strDescr = "بەلگىلەنگەن دائىرىدىكى ئەڭ چوڭ سان" strArgs (1) = "سانلىق قىممەت دائىرىسى" strArgs (2) = "تۆۋەن ئارىلىق چېگراسى" strArgs (3) = "ئۈستۈنكى ئارىلىق چېگراسى" Application.MacroOptions ماكرو: "مېنىڭ ئىختىيارىي ئىقتىدارلىرىم" ئاخىرقى تارماق

ياكى

Sub RegisterUDF () قوللىنىشچان پروگرامما. ئىختىيارى ئىقتىدارلار ", _ ArgumentDescription: = Array (_" سانلىق قىممەت دائىرىسى ", _" تۆۋەن ئارىلىق بور der ", _" ئۈستۈنكى ئارىلىق چېگراسى ") ئاخىرقى تارماق

ئۆزگىرىشچان str FuncName بۇ ئىقتىدارنىڭ ئىسمى. strDescr - ئىقتىدار چۈشەندۈرۈشى. strArgs ئۆزگەرگۈچى مىقدار ھەر بىر تالاش-تارتىشنىڭ بېشارەتلىرىنى ئۆز ئىچىگە ئالىدۇ.

تۆتىنچى تالاش-تارتىشنىڭ نېمە ئىكەنلىكىدىن گۇمانلىنىشىڭىز مۇمكىن.Application.MacroOptions. بۇ تاللانما تالاش-تارتىشنىڭ ئىسمى كاتېگورىيە بولۇپ ، بىزنىڭ خاسلاشتۇرۇلغان GetMaxBetween () فۇنكىسىيەسى ئورۇنلىنىدىغان Excel ئىقتىدارلىرىنىڭ سىنىپىنى كۆرسىتىدۇ. سىز ئۇنى ھازىرقى تۈرلەرنىڭ خالىغان بىرىگە قويسىڭىز بولىدۇ: ماتېماتىكا & amp ; قوزغىتىش ، ستاتىستىكا ، لوگىكا قاتارلىقلار سىز قۇرغان ئىقتىدارلارنى قويماقچى بولغان يېڭى سەھىپىنىڭ نامىنى بەلگىلىيەلەيسىز. ئەگەر سىز كاتېگورىيە تاللانمىسىنى ئىشلەتمىسىڭىز ، ئۇنداقتا ئىختىيارى ئىقتىدار ئاپتوماتىك ھالدا «ئىشلەتكۈچى ئېنىقلانغان» كاتېگورىيىسىگە ئورۇنلاشتۇرۇلىدۇ.

ئىقتىدار كودىنى مودۇل كۆزنىكىگە چاپلاڭ:

ئاندىن «ئىجرا» كۇنۇپكىسىنى بېسىڭ. بۇ بۇيرۇق سىزنىڭ GetMaxBetween () ئىقتىدارىڭىز بىلەن Fx كۇنۇپكىسىنى ئىشلىتىشنىڭ بارلىق تەڭشەكلىرىنى ئىجرا قىلىدۇ.

ئىقتىدار قىستۇرۇش قورالى ، سىز GetMaxBetween فۇنكىسىيەسىنىڭ «مېنىڭ خاس ئىقتىدارلىرىم» تۈرىدە ئىكەنلىكىنى كۆرىسىز:

سىز پەقەت فۇنكسىيە نامىنى كاتەكچىگە يېزىشنى باشلىسىڭىز بولىدۇ ھەمدە تاللانما ئىقتىدار تىزىملىكىدىن ئۆزىڭىزنىڭ ئىختىيارى فۇنكىسىيەسىنى كۆرىسىز.

ئاندىن ئىقتىدار يېتەكچىسىگە تېلېفون قىلىڭ. Fx كۇنۇپكىسى بىلەن.

كۆرسەتمە. سىز يەنە CRTL + A كۇنۇپكىسىنى ئىشلىتىپ ئىقتىدار يېتەكچىسى ئاچالايسىز.

ئىقتىدار يېتەكچىسى كۆزنىكىدە ئىقتىدارىڭىزنىڭ چۈشەندۈرۈشىنى ، شۇنداقلا بىرىنچى تالاش-تارتىشنىڭ بېشارەتلىرىنى كۆرىسىز. نۇر بەلگىسىنى ئۈستىگە قويسىڭىزئىككىنچى ياكى ئۈچىنچى تالاش-تارتىش ، سىز ئۇلارغا بېشارەتلەرنىمۇ كۆرىسىز.

ئەگەر بۇ بېشارەتلەرنىڭ تېكىستىنى ئۆزگەرتمەكچى بولسىڭىز ، strDescr ۋە strArgs <نىڭ قىممىتىنى ئۆزگەرتىڭ. 7> ئۆزگەرگۈچى مىقدار RegisterUDF () كودى. ئاندىن RegisterUDF () بۇيرۇقىنى قايتا ئىجرا قىلىڭ.

ئەگەر سىز بارلىق تەڭشەكلەرنى ئەمەلدىن قالدۇرۇپ ، ئىقتىدار چۈشەندۈرۈشىنى ئۆچۈرمەكچى بولسىڭىز ، بۇ كودنى ئىجرا قىلىڭ: Application.MacroOptions Macro: = "GetMaxBetween", _ چۈشەندۈرۈش: = قۇرۇق ، ArgumentDescription: = قۇرۇق ، كاتېگورىيە: = قۇرۇق ئاخىرلىشىش

ئىختىيارى فۇنكسىيەگە كىرگەندە يەنە بىر خىل ئۇسۇل بار. فۇنكىسىيەنىڭ نامىنى كىرگۈزۈپ ئاندىن Ctrl + Shift + A نى بېسىڭ:

=GetMaxBetween( + Ctrl + Shift + A

سىز بارلىق ئىقتىدارلارنىڭ تالاش-تارتىشلىرىنىڭ تىزىملىكىنى كۆرىسىز:

بەختكە قارشى ، بۇ يەردە ئىقتىدارنىڭ چۈشەندۈرۈشى ۋە ئۇنىڭ دەلىللىرىنى كۆرەلمەيسىز. ئەمما تالاش-تارتىشلارنىڭ ئىسمى خېلى مەزمۇنلۇق بولسا ، ئۇلارمۇ پايدىلىق بولۇشى مۇمكىن. شۇنداقتىمۇ ، ئۇ ھېچنېمىدىن ياخشى ئەمەس :)

ئۆلچەملىك Excel ئىقتىدارىغا ئوخشاش UDF لارغا ئەقلىي ئىقتىدار يارىتىش ئۈچۈن ئازراق خىزمەت قىلىشقا توغرا كېلىدۇ. بەختكە قارشى ، مىكروسوفت ھېچقانداق تاللاش بىلەن تەمىنلىمەيدۇ. ھازىر بار بولغان بىردىنبىر ھەل قىلىش چارىسى Excel-DNA IntelliSense كېڭەيتىلمىسى. سىز ئاچقۇچىلارنىڭ تور بېتىدىن تېخىمۇ كۆپ ئۇچۇرلارنى تاپالايسىز.

ئۈمىدۋار ، بۇ كۆرسەتمىلەر سىزنىڭ خاس ئىقتىدارىڭىز ئىشلىمىگەن ياكى ئىشلىمىگەندە مەسىلىلەرنى ھەل قىلىشىڭىزغا ياردەم بېرىدۇ.ئۆزىڭىز خالىغانچە ئىشلەڭ. ئەگەر ، UDF يەنىلا ئىشلىمىسە ، مەسىلىلەرنى باھا بۆلۈمىدە توغرا تەسۋىرلەپ بېرىڭ. بىز ئۇنى تېپىپ چىقىپ ھەل قىلىش چارىسىنى تېپىشقا تىرىشىمىز ؛)

مايكول بروۋن مەخسۇس تېخنىكا ھەۋەسكارى بولۇپ ، يۇمشاق دېتال قوراللىرى ئارقىلىق مۇرەككەپ جەريانلارنى ئاددىيلاشتۇرىدۇ. تېخنىكا ساھەسىدە ئون نەچچە يىللىق تەجرىبىسى بار ، ئۇ Microsoft Excel ۋە Outlook ، شۇنداقلا Google Sheets ۋە Docs قاتارلىق جەھەتلەردە ئۆزىنىڭ ماھارىتىنى ئۆستۈردى. مايكىلنىڭ بىلوگى ئۆزىنىڭ بىلىمى ۋە تەجرىبىسىنى باشقىلار بىلەن ئورتاقلىشىشقا بېغىشلانغان بولۇپ ، ئىشلەپچىقىرىش ۋە ئۈنۈمنى ئاشۇرۇش ئۈچۈن ئاسان ئەگىشىدىغان ئۇسۇل ۋە دەرسلىكلەر بىلەن تەمىنلەيدۇ. مەيلى تەجرىبىلىك كەسپىي خادىم ياكى يېڭى ئۆگەنگۈچى بولۇڭ ، مايكولنىڭ بىلوگى بۇ مۇھىم يۇمشاق دېتال قوراللىرىدىن ئۈنۈملۈك پايدىلىنىش ئۈچۈن قىممەتلىك چۈشەنچە ۋە ئەمەلىي مەسلىھەت بىلەن تەمىنلەيدۇ.