ভিবিএ ব্যবহার না করে কাস্টম ব্যবহারকারী ফাংশন


10

ভিবিএ ব্যবহার না করে এক্সেলে কাস্টম ব্যবহারকারী ফাংশন তৈরি করা সম্ভব?
আমার সমস্যাটি হ'ল আমার খুব দীর্ঘ ক্রিয়াকলাপ করতে স্ট্যান্ডার্ড এক্সেল ফাংশনগুলির দীর্ঘতর স্ট্রিং রয়েছে। এই ফাংশনটি আমার ওয়ার্কবুকের 25 টি পৃথক কার্যপত্রক জুড়ে ব্যবহৃত হয়। আমার যদি এটির পরিবর্তন করতে হয় তবে আমি কেবল একটি জায়গায় এটি করতে চাই এবং পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সমস্ত শীট জুড়ে প্রচার করতে চাই।

উদাহরণস্বরূপ, একটি সাধারণ এবং তুচ্ছ ঘটনা হ'ল এসএমএম () এর ফলাফলের সাথে একটি যুক্ত করা, অর্থাৎ। সুম (মাইসারিজ) +1 করুন এবং এটিকে একটি নতুন ফাংশন MYSUM () বলে।

সম্ভাব্য ত্রুটিগুলি ও যুক্ত হওয়া জটিলতার কারণে আমি দীর্ঘ সূত্রটি ভিবিএতে অনুবাদ করতে দ্বিধা বোধ করছি।


দুর্দান্ত প্রশ্ন, যদিও আমি সন্দেহ করি আপনি একটি উত্তর খুঁজে পাবেন। আমি মনে করি ভিবিএতে প্রয়োজনীয় ফাংশন তৈরিতে সহায়তা চাইতে আরও ভাল কোর্স হবে।
এলিয়াদটেক

উত্তর:


11

হ্যাঁ, আপনি যদি এক্সেলের নামযুক্ত সূত্র ব্যবহার করেন তবে এটি সম্ভব ।

উদাহরণস্বরূপ, ধরুন যে আপনি আপনার কার্য পুস্তকের বিভিন্ন জায়গায় টানা দুটি কলাম ( A5: Ax - B5: Bx ) এর যোগফলের মধ্যে পার্থক্য গণনা করতে হবে ( এক্স প্রতিটি কলামের চূড়ান্ত সারি):

সুতরাং আপনি এ সংজ্ঞায়িত A11 একটি নাম পরিবর্তন যেমন (যে কোন নাম ব্যবহার করা যেতে পারে) -Sum (বি $ 5: B10): = SUM (A10 একটি $ 5) অভিমানী যে ডেটা সারিতে শুরু 5 পূর্ববর্তী সারি পর্যন্ত। এটি যে কোনও ঘর হতে পারে, কেবল এ 11 নয়, সংজ্ঞাটি একইভাবে পরিবর্তিত হয়।

দুর্ভাগ্যক্রমে, এক্সেল 2010 নিখুঁত উপসর্গ ( $ ) এবং ওয়ার্কশিট উপসর্গ সন্নিবেশ করায় তাই আপনাকে উপসর্গগুলি মুছতে হবে, তবে বিস্মৃত চিহ্নগুলি রেখে এবং বেশিরভাগ $ অক্ষর মুছে ফেলতে হবে ।

আপনি যখন সূত্রগুলি সরান, সর্বাধিক উল্লেখগুলি আপেক্ষিক। সুতরাং এটি সর্বদা বর্তমান কলাম এবং নিম্নলিখিতের মধ্যে পার্থক্য গণনা করে, সারির 5 থেকে শুরু করে মোট লাইনের আগে লাইন পর্যন্ত।

আপনার মধ্যে তথ্য আছে তাই আপনি যদি , C5 এবং D100 আপনি শুধু করা = পার্থক্য মধ্যে C101 এবং এটি হিসাব SUM (, C5: C100) - SUM (D5: D100)

স্পষ্টতই, আপনি নাম দেওয়া সূত্রে স্থানীয় বা বিশ্বব্যাপী নামগুলি ব্যবহার করতে পারেন, যেমন আপনি আপনার প্রশ্নের মধ্যে উল্লেখ করেছেন।

নামযুক্ত সূত্রগুলিতে আপনি আরও বিশদটি পড়তে পারেন ।


2

আমি আপনি কোন VBA বলেন জানি, কিন্তু করছেন অনুসরণ করে না আপনার সূত্র পুনরায় লিখতে আসলে আপনি প্রয়োজন, অনেক VBA সম্পর্কে জানি না, আর VBA আপনার সূত্র বজায় রাখা। আপনি এটি একবার লিখতে পারেন এবং এটি ভুলে যেতে পারেন।

স্ট্রিং হিসাবে কোনও ঘর থেকে সূত্রটি বের করতে একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন তৈরি করুন:

Function GetFormula(Target As Range) As String
    GetFormula = Target.Formula
End Function

সূত্রের মতো একটি স্ট্রিং মূল্যায়ন করতে অন্যটি তৈরি করুন:

Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
End Function

যদি আপনার শীট 1! এ 1 এ আপনার মাস্টার সূত্রটি ছিল, তবে আপনি এটি প্রতিটি কক্ষে এটি ব্যবহার করা দরকার যা এটি লিখতে হবে:

=eval(getformula(sheet1!a1))

এক্সেল নামযুক্ত সূত্রগুলির মাধ্যমে এই পদ্ধতিটি ব্যবহার করার সুবিধা কী?
ডাকোটাডি

এটি আসলে একটি ফাংশন সংজ্ঞায়িত করে, যেখানে "নামযুক্ত সূত্রগুলি" কেবলমাত্র একটি ফলাফলের জন্য একটি রেফারেন্স সংজ্ঞায়িত করে। উদাহরণস্বরূপ, আমি যদি এমন একটি ফাংশন তৈরি করতে চাই যা কোষটি ফাঁকা বা কেবল সাদা জায়গা হয় কিনা তা পরীক্ষা করে দেখায়, আমি এটির মতো কল করতে চাই =IF(BlankOrWhitespace(A5),true,false)। নামযুক্ত সূত্রগুলির জন্য এটি সম্ভব নয় কারণ আপনি কোনও ঘরের সূত্রের বিষয়বস্তু উল্লেখ করছেন এবং কোনও নতুন ফাংশন সংজ্ঞায়িত করছেন না
mtalexan

1
ভিবিএ ব্যবহার থেকে উদ্ভূত আরও একটি সমস্যা রয়েছে। নিরাপত্তা। আপনার ওয়ার্কবুকটি অনিরাপদ হিসাবে বিবেচিত হবে কারণ ভিবিএর অপব্যবহার করা যেতে পারে। আপনার ওয়ার্কবুকটি ভাইরাস বলে ভুল হবে।
আকংকা

@ আকংকাতে কেন আমি ভিবিএ এড়ানোর কারণ। এটি খুব দুঃখজনক.
পেড্রো 77

0

এই থ্রেডটি কিছুটা পুরানো, তবে আমি অন্য কোনও কিছুর সন্ধানে এটিকে হোঁচট খেয়েছি এবং ভেবেছিলাম যে আমি এই সঠিক জিনিসটি সম্পাদন করার চেষ্টা করে কিছুক্ষণ আগে তৈরি একটি ওয়ার্কবুক শেয়ার করেছি: https://www.rodbox.com/s/gf5qrjj5q81tpke/ Title_Case_Named_Range_Function.xlsx? DL = 1

সংক্ষেপে, আপনি একটি 0-দৈর্ঘ্যের স্ট্রিং আউটপুট সহ এক্সেল এর অন্তর্নির্মিত সূত্রগুলির একটি হাইজ্যাক করে এবং নাম রেঞ্জ স্ট্রিং ম্যানিপুলেশনের মাধ্যমে সন্নিবেশিত ডেটার ব্যাখ্যা করতে একটি পদ্ধতি নিয়ে এসে ভিবিএ (সাজানো) ছাড়াই একটি ইউডিএফ তৈরি করতে পারেন, তবে এটি এটি করতে অক্ষম ছাড়িয়ে। আপনি সতর্ক হয়ে গেছেন! :)

পদ্ধতি:

  1. উদাহরণে, আমি উভয় ব্যবহৃত = REPT ([কক্ষ উল্লেখ বা কোট মধ্যে কিছু টেক্সট এখানে], 0) এবং = টেক্সট ([কক্ষ উল্লেখ অথবা এখানে কোট মধ্যে কিছু টেক্সট], ";;;") আদ্যস্থল হিসাবে হতে বিল্ট-ইন ফর্মুলায় কিছু ব্যবহারকারীর ইনপুট থাকতে সক্ষম যা ঘরে নিজেই কোনও দৃশ্যমান পাঠ্যের ফল দেয় না।

  2. তারপরে আমি একটি নামযুক্ত রেঞ্জ তৈরি করেছি যা আপনার ইউডিএফ নামের সমতুল্য হবে ( টিসেস শিটের প্রাথমিক উদাহরণ, তবে সেখানে আরও কয়েকটি ভিন্নতা রয়েছে)। এই নেমযুক্ত রেঞ্জটি কার্যত অন্য যে কোন গোপনীয় নামটি ওয়ার্কবুকের ভিতরে ব্যবহৃত সেল থেকে সূত্র টেক্সট বের করার জন্য উল্লেখ করে এবং তারপরে একটি স্ট্রিং হিসাবে একটি চূড়ান্ত আউটপুট তৈরি করতে কিছু যুক্তি প্রয়োগ করে। এটি লক্ষণীয় যে এই পদ্ধতিটি কেবল পাঠ্য ফলাফলগুলি ফিরিয়ে দিতে পারে এবং সংখ্যাগুলি নয় (যদিও এটি কোনও পৃথক ঘরে রূপান্তরিত করার জন্য পাঠ্য হিসাবে কোনও সংখ্যা ফেরত দিতে পারে)।

  3. এটির নিজস্ব হিসাবে, = টি কেস একটি ত্রুটি তৈরি করে যেহেতু এটি ব্যাখ্যা করার জন্য কোনও সেল / স্ট্রিং রেফারেন্স নেই (উদাহরণস্বরূপ, ত্রুটি বার্তাটি ফর্ম্যাটটির কেবল একটি অনুস্মারক যা অনুসরণ করা দরকার)। তবে, প্রত্যাশিত 0-দৈর্ঘ্যের স্ট্রিং এক্সেল সূত্রের সাথে টিসেসের সংমিশ্রণটি সূত্র থেকে ইনপুটটিকে স্ট্রিং হিসাবে পড়তে দেয় এবং এতে আপনার যুক্তি প্রয়োগ করতে পারে। শেষ পর্যন্ত, সূত্র / আউটপুট নীচের মত দেখতে হবে। মনে রাখবেন যে আমি নীচের সূত্রটিতে পাঠ্য স্ট্রিংটি সরাসরি inোকালাম, তবে আপনি উদাহরণ শীটে দেখতে পাবেন যে এটি কোনও একক সেল রেফারেন্সটিও ব্যাখ্যা করতে পারে।

    সূত্র:
    =TCase&REPT("i want to convert this mIxEd sTRing into A TITLE cAsE string!!!",0)

    আউটপুট:

    I Want to Convert This Mixed String Into a Title Case String!!!

শেষ অবধি, এক্সেলকে কী সীমাবদ্ধ করা যেতে পারে তা দেখার জন্য আমি মুরব্বী কৌতূহল ব্যতীত অন্য কোনও কিছুর জন্য এই পদ্ধতি অনুসরণ করার পরামর্শ দেব না । ভিবিএ অনেক সহজ এবং মার্জিত ইউডিএফ সমাধান, তবে আমি অন্তত চ্যালেঞ্জটি গ্রহণ করতে মজা পেয়েছিলাম।

দ্রষ্টব্য: উদাহরণস্বরূপ ফাইলটিতে এটি কীভাবে আরও সহজ কাজ করে তা আপনি দেখতে চান তবে সূত্রের ফিতাটি থেকে মূল্যায়ন সূত্রটি ব্যবহার করুনএবং যেখানে একটি উদাহরণ সন্নিবেশ করানো হয়েছে সেগুলির একটিতে সূত্রের আউট / আউট স্টেপ করুন। আমার কাজ শেষ হওয়ার পরে এটি পরিষ্কার করার জন্য আমি অন্তর্নিহিত নেমযুক্ত সমস্ত রেঞ্জকে লুকিয়ে রেখেছি, সুতরাং আপনি যদি সেগুলি না দেখানতবেতারা নাম পরিচালকের কাছে প্রদর্শিত হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.