উত্তর:
এটি পাঠ্য এবং সংখ্যা উভয় নিয়েই কাজ করে এবং ফাঁকা ঘর আছে কিনা তা যত্ন করে না, অর্থাৎ এটি সর্বশেষ নন-ফাঁকা ঘরটি ফিরিয়ে দেবে।
এটি অ্যারে-প্রবেশ করা দরকার , এর অর্থ এটি আপনি টাইপ বা পেস্ট করার পরে Ctrl-Shift-Enter টিপুন A নীচে কলাম A এর জন্য রয়েছে:
=INDEX(A:A,MAX((A:A<>"")*(ROW(A:A))))
CELL()
বা OFFSET()
), তবে বেশি আপোভেটেড কোনও কোথায় থাকে তা আপনাকে না জানিয়ে মান দেয় returns
নিম্নলিখিত সাধারণ সূত্র ব্যবহার করা আরও দ্রুত
=LOOKUP(2,1/(A:A<>""),A:A)
এক্সেল 2003 এর জন্য:
=LOOKUP(2,1/(A1:A65535<>""),A1:A65535)
এটি আপনাকে নিম্নলিখিত সুবিধা দেয়:
ব্যাখ্যা:
(A:A<>"")
অ্যারে প্রদান {TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
এই অ্যারেটিতে পরিবর্তন করে {1,1,..,#DIV/0!,..}
।LOOKUP
প্রত্যাশা করে , এবং এটি বিবেচনা করে যে ফাংশনটি যদি কোনও সঠিক মিল খুঁজে না পায়, তবে এটি (আমাদের ক্ষেত্রে ) মানটির চেয়ে কম (আমাদের ক্ষেত্রে ) এর চেয়ে কম বা তার সমান সবচেয়ে বড় মানটি চয়ন করে , সূত্রটি অ্যারেতে সর্বশেষে খুঁজে পায় এবং (তৃতীয় প্যারামিটার - ) থেকে অনুরূপ মান প্রদান করে ।LOOKUP
lookup_range
{1,1,..,#DIV/0!,..}
2
1
result_range
A:A
এছাড়াও সামান্য দ্রষ্টব্য - উপরের সূত্রটি ত্রুটিগুলি সহ অ্যাকাউন্ট কক্ষগুলিতে নেয় না (আপনি কেবলমাত্র শেষ অবধি ফাঁকা ঘরে ত্রুটি থাকলে তা দেখতে পাবেন)। আপনি যদি এগুলিকে আমলে নিতে চান তবে ব্যবহার করুন:
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
নীচের চিত্রটি পার্থক্য দেখায়:
LOOKUP
শেষ যুক্তিটি result_vector
alচ্ছিক। তবে আমি যদি এটি বাদ দিই তবে আমি একটি খুব অদ্ভুত ফলাফল পেয়েছি যা আমি বুঝতে পারি না।
LOOKUP
ফাংশনটি এটি খুঁজে না পায় তবে lookup_value
ফাংশনটি তার সাথে সবচেয়ে বড় মানের সাথে মিলবে lookup_vector
বা তার সমান হবে lookup_value.
" যদি আমি ত্রুটিটি =LOOKUP(2,A:A<>"",A:A)
জেনারেটিন ছাড়াই ব্যবহার করি তবে মনে হয় এটির মাঝখানে কিছু মান ফিরে আসে ভেক্টর এই ক্ষেত্রে সঠিক কার্যকারিতা কী তা আমি খুঁজে পাইনি। #DIV/0!
1/...
=LOOKUP(2,1/(A:A<>""),ROW(A:A))
কিন্তু যোগ ROW
ফাংশন যোগ করা হবে "উদ্বায়ীতা" প্রভাব - সূত্র প্রতিটি সময় wroksheet কোন সেল পরিবর্তন পুনঃগণনা করা হবে না
এখানে আরও একটি বিকল্প রয়েছে: =OFFSET($A$1;COUNTA(A:A)-1;0)
COUNTA
পরিবর্তে (ব্যবহারের পরিবর্তে COUNT
) ঘর থাকলে এটি কাজ করবে না । ফাঁকা কোষের উল্লেখ নেই।
ডগ গ্ল্যান্সির উত্তর দিয়ে দেওয়া দুর্দান্ত নেতৃত্ব দ্বারা অনুপ্রাণিত হয়ে, আমি অ্যারে-সূত্রের প্রয়োজন ছাড়াই একই জিনিস করার উপায় নিয়ে এসেছি। কেন আমাকে জিজ্ঞাসা করবেন না, তবে আমি যদি সম্ভব হয় তবে অ্যারের সূত্রগুলি ব্যবহার এড়াতে আগ্রহী (কোনও নির্দিষ্ট কারণে নয়, এটি কেবল আমার স্টাইল)।
এটা এখানে:
=SUMPRODUCT(MAX(($A:$A<>"")*(ROW(A:A))))
রেফারেন্স কলাম হিসাবে কলাম এ ব্যবহার করে সর্বশেষ খালি খালি সারিটি সন্ধান করার জন্য
=SUMPRODUCT(MAX(($1:$1<>"")*(COLUMN(1:1))))
রেফারেন্স সারি হিসাবে সারি 1 ব্যবহার করে সর্বশেষ খালি খালিটি খুঁজে পাওয়ার জন্য
এটি আরও তালিকাভুক্ত নামকরণের রেঞ্জগুলি দক্ষতার সাথে সংজ্ঞায়িত করতে সূচক ফাংশনের সাথে একযোগে ব্যবহার করা যেতে পারে তবে এটি অন্য পোস্টের জন্য এমন কিছু কারণ যা এখানে বর্ণিত তাত্ক্ষণিক প্রশ্নের সাথে সম্পর্কিত নয়।
আমি উপরোক্ত পদ্ধতিগুলি এক্সেল ২০১০, উভয়ই "নেটিভ" এবং "সামঞ্জস্যতা মোড" (এক্সেলের পুরানো সংস্করণের জন্য) দিয়ে পরীক্ষা করেছি এবং তারা কাজ করে। আবার এগুলির সাথে আপনার কোনও সিটিআরএল + শিফট + এন্টার করার দরকার নেই। এক্সেলের মধ্যে সমৃদ্ধভাবে কাজ করার উপকারের মাধ্যমে আমরা অ্যারে-অপারেশনগুলি চালানোর প্রয়োজনীয়তার আশেপাশে আমাদের অস্ত্রগুলি পেতে পারি তবে অ্যারে-সূত্র ছাড়াই আমরা এটি করি। আমি আশা করি যে কেউ কেউ এই প্রস্তাবিত প্রচুর সমাধানগুলির সৌন্দর্য, সরলতা এবং কমনীয়তার প্রশংসা করতে পারে যতটা আমি করি। যদিও আমি উপরের সমাধানগুলির মেমরি-দক্ষতার প্রমাণ দিচ্ছি না। কেবল এগুলি যে তারা সাধারণ, সুন্দর দেখায়, উদ্দেশ্যযুক্ত উদ্দেশ্যে সহায়তা করে এবং অন্যান্য উদ্দেশ্যে তাদের ব্যবহার প্রসারিত করার জন্য যথেষ্ট নমনীয় :)
আশাকরি এটা সাহায্য করবে!
শুভকামনা!
আমি জানি এই প্রশ্নটি পুরানো, তবে প্রদত্ত উত্তরের সাথে আমি সন্তুষ্ট নই।
LOOKUP, VLOOKUP এবং HLOOKUP এর পারফরম্যান্স সমস্যা রয়েছে এবং সত্যই কখনও ব্যবহার করা উচিত নয়।
অ্যারে ফাংশনগুলির প্রচুর ওভারহেড থাকে এবং পারফরম্যান্সের সমস্যাও থাকতে পারে, সুতরাং এটি কেবল সর্বশেষ রিসর্ট হিসাবে ব্যবহার করা উচিত।
ডেটা অবিচ্ছিন্নভাবে ফাঁকা না থাকলে COUNT এবং COUNTA সমস্যাগুলিতে চলে আসে, অর্থাত আপনার ফাঁকা স্থান রয়েছে এবং তারপরে আবার প্রশ্নটির মধ্যে থাকা ডেটা
INDIRECT অস্থির হয় তাই এটি কেবল সর্বশেষ সমাধান হিসাবে ব্যবহার করা উচিত
অফসেটটি অস্থির হয় তাই এটি কেবল সর্বশেষ সমাধান হিসাবে ব্যবহার করা উচিত
শেষ সারি বা কলামের কোনও উল্লেখ উল্লেখ (উদাহরণস্বরূপ, এক্সেল 2003-এ 65536 তম সারি) শক্তিশালী নয় এবং অতিরিক্ত ওভারহেডের ফলাফল
এটিই আমি ব্যবহার করি
যখন ডেটা টাইপ মিশ্রিত হয়: =max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
যখন এটি জানা যায় যে ডেটাতে কেবল সংখ্যা থাকে: =MATCH(1E+306,[RANGE],1)
যখন এটি জানা যায় যে ডেটাতে কেবল পাঠ্য থাকে: =MATCH("*",[RANGE],-1)
ম্যাচের সর্বনিম্ন ওভারহেড রয়েছে এবং এটি অ-উদ্বায়ী হয়, তাই আপনি যদি প্রচুর ডেটা নিয়ে কাজ করছেন তবে এটি ব্যবহার করা সবচেয়ে ভাল।
TRUE
/ FALSE
) সহ কক্ষগুলি থাকে তবে সেগুলি সনাক্ত করা যায় না। এই উত্তরটি বুলেটপ্রুফ নয় বলে সত্ত্বেও, আমি এখনও মনে করি এই উত্তরটির কার্য সম্পাদনের উপর সবচেয়ে কম প্রভাব রয়েছে।
=INDEX(N:N,MATCH(1E+306,N:N,1))
এটি এক্সেল 2003 এ কাজ করে (এবং পরে ছোটখাটো সম্পাদনা করে নীচে দেখুন)। অ্যারে সূত্র হিসাবে এটি প্রবেশ করতে Ctrl + Shift + Enter টিপুন (কেবল প্রবেশ নয়)।
=IF(ISBLANK(A65536),INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535)))),A65536)
সচেতন হন যে এক্সেল 2003 সম্পূর্ণ কলামে অ্যারে সূত্র প্রয়োগ করতে অক্ষম । এমনটি করলে ফলন হয় #NUM!
; অপ্রত্যাশিত ফলাফল হতে পারে! (সম্পাদনা : মাইক্রোসফট থেকে তথ্য সংক্রান্ত বিরোধ রয়েছে: একই মে বা নাও হতে পারে এক্সেল 2007 সম্পর্কে সত্য হতে; সমস্যা হতে পারে 2010 সংশোধন করা হয়েছে )
এ কারণেই আমি অ্যারে সূত্রটি পরিসীমাতে প্রয়োগ করি A1:A65535
এবং শেষ কক্ষে বিশেষ চিকিত্সা দিই যা A65536
এক্সেল 2003 এ রয়েছে। কেবলমাত্র বলা যায় না A:A
বা এমনকি A1:A65536
পরে স্বয়ংক্রিয়ভাবে ফিরে আসে A:A
।
আপনি যদি নিশ্চিত হন A65536
যে ফাঁকা, তবে আপনি এই IF
অংশটি এড়িয়ে যেতে পারেন :
=INDEX(A1:A65535,MAX((A1:A65535<>"")*(ROW(A1:A65535))))
মনে রাখবেন যে আপনি যদি এক্সেল 2007 বা 2010 ব্যবহার করেন তবে শেষ সারির নম্বরটি 1048576 নয় 65536, তাই উপরেরটি যথাযথ হিসাবে সামঞ্জস্য করুন।
যদি আপনার ডেটার মাঝখানে কোনও ফাঁকা ঘর থাকে না, তবে আমি কেবল সহজ সূত্রটি ব্যবহার করব =INDEX(A:A,COUNTA(A:A))
।
=INDEX(19:19,COUNTA(19:19))
অ্যারে সূত্র ব্যতীত একটি বিকল্প সমাধান, অ্যারে সূত্রগুলি ছাড়াই (ইঙ্গিত থেকে) সমাধান সহ পূর্ববর্তী উত্তরের চেয়ে সম্ভবত আরও শক্তিশালী , হ'ল
=INDEX(A:A,INDEX(MAX(($A:$A<>"")*(ROW(A:A))),0))
এই উত্তরটি উদাহরণ হিসাবে দেখুন । যশ ব্র্যাড এবং ব্যারি houdini , যিনি সমাধানে সাহায্য করেছে এই প্রশ্নের ।
অ-অ্যারে সূত্রকে প্রাধান্য দেওয়ার সম্ভাব্য কারণগুলি এখানে দেওয়া হল:
একটি অফিসিয়াল মাইক্রোসফ্ট পৃষ্ঠা ("অ্যারের সূত্রগুলি ব্যবহারের অসুবিধা" সন্ধান করুন)।
অ্যারে সূত্রগুলি যাদুকরী মনে হতে পারে তবে এর কিছু অসুবিধাও রয়েছে:
A
ঘটনাকে একটি দিয়ে প্রতিস্থাপন করেছি D
। আমি কি ভুল করছি?
যদি আপনি কলাম (এ) ব্যবহার করেন:
=INDIRECT("A" & SUMPRODUCT(MAX((A:A<>"")*(ROW(A:A)))))
যদি আপনার পরিসীমা A1: A10 হয় তবে আপনি ব্যবহার করতে পারেন:
=INDIRECT("A" & SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10)))))
এই সূত্রে:
SUMPRODUCT(MAX(($A$1:$A10<>"")*(ROW($A$1:$A10))))
সর্বশেষ খালি সারি সংখ্যাটি দেয় না এবং পরোক্ষভাবে () সেল মান দেয়।
=INDEX(A:A, COUNTA(A:A), 1)
এখান থেকে নেওয়া
=MATCH("*";A1:A10;-1)
পাঠ্য তথ্য জন্য
=MATCH(0;A1:A10;-1)
সংখ্যাগত তথ্য জন্য
Ive সমস্ত অ-উদ্বায়ী সংস্করণ চেষ্টা করেছে তবে উপরে বর্ণিত একটি সংস্করণ কাজ করে নি .. Excel 2003 / 2007update। অবশ্যই এটি এক্সেল 2003 এ করা যেতে পারে an অ্যারে বা মানক সূত্র হিসাবে নয়। আমি হয় কেবল একটি ফাঁকা, 0 বা # মান ত্রুটি পেয়েছি। তাই আমি অস্থির পদ্ধতি অবলম্বন করি .. এটি কার্যকর ..
= LOOKUP (2,1 / (T4: T369 <> ""), T4: T369)
@ জুলিয়ান ক্রোন .. ব্যবহার ";" "," এর পরিবর্তে কাজ করে না! আমার মনে হয় আপনি এমএস এক্সেল না লিবার অফিস ব্যবহার করছেন? লুকআপ খুব বিরক্তিকরভাবে ভলিটাইল আমি এটিকে কেবলমাত্র একটি শেষ অবলম্বন হিসাবে ব্যবহার করি
একটি ভিবিএ মডিউলটিতে এই কোডটি রাখুন। সংরক্ষণ. ফাংশনগুলির অধীনে, এই ফাংশনের জন্য ব্যবহারকারী সংজ্ঞায়িত চেহারা।
Function LastNonBlankCell(Range As Excel.Range) As Variant
Application.Volatile
LastNonBlankCell = Range.End(xlDown).Value
End Function
পাঠ্য তথ্য জন্য:
EQUIV("";A1:A10;-1)
সংখ্যাগত তথ্য জন্য:
EQUIV(0;A1:A10;-1)
এটি আপনাকে নির্বাচিত পরিসীমাটিতে সর্বশেষ খালি ঘরটির আপেক্ষিক সূচক দেয় (এখানে এ 1: এ 10)।
আপনি যদি মানটি পেতে চান তবে এটি নির্ধারণের পরে INDIRECT এর মাধ্যমে অ্যাক্সেস করুন-পরম্পরাগত- পরম সেল রেফারেন্স, যেমন:
INDIRECT("A" & (nb_line_where_your_data_start + EQUIV(...) - 1))
আমি খুব একই সমস্যা। এই সূত্রটিও সমানভাবে ভাল কাজ করে: -
=INDIRECT(CONCATENATE("$G$",(14+(COUNTA($G$14:$G$65535)-1))))
14 আপনি যে সারিতে গণনা করতে চান তার প্রথম সারির সারি সংখ্যা number
ক্রনিক ক্লাওথুথ
আপনি যদি জানেন যে এর মধ্যে খালি ঘর থাকবে না, দ্রুততম উপায় এটি।
=INDIRECT("O"&(COUNT(O:O,"<>""")))
এটি কেবল খালি নয় এমন কোষ গণনা করে এবং উপযুক্ত কক্ষকে বোঝায়।
এটি একটি নির্দিষ্ট পরিসরের জন্যও ব্যবহার করা যেতে পারে।
=INDIRECT("O"&(COUNT(O4:O34,"<>""")+3))
এটি O4: O34 পরিসীমাটিতে সর্বশেষ খালি ঘরটি দেয়।
আমি মনে করি ডাব্লু 5ALIVE থেকে প্রাপ্ত প্রতিক্রিয়া আমি কলামে ডেটার শেষ সারিটি খুঁজে পেতে যা ব্যবহার করি তার নিকটতম। ধরে নিচ্ছি যে আমি কলাম এ-তে ডেটা সহ সর্বশেষ সারিটি সন্ধান করছি, যদিও আমি আরও জেনেরিক দেখার জন্য নিম্নলিখিতটি ব্যবহার করব:
=MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0))
প্রথম ম্যাচটি সর্বশেষ পাঠ্য কক্ষটি খুঁজে পাবে এবং দ্বিতীয় ম্যাচ শেষ সংখ্যার ঘরটি সন্ধান করবে। যদি প্রথম ম্যাচটি সমস্ত সংখ্যক কোষ খুঁজে পায় বা দ্বিতীয় ম্যাচে সমস্ত পাঠ্যকোষ সন্ধান করে তবে IFERROR ফাংশনটি শূন্য ফিরে আসে।
মূলত এটি W5ALIVE এর মিশ্র পাঠ্য এবং সংখ্যা সমাধানের সামান্য প্রকরণ।
সময় পরীক্ষা করার সময়, এটি সমতুল্য লাকআপ বৈচিত্রগুলির চেয়ে উল্লেখযোগ্যভাবে দ্রুত ছিল।
সেই সর্বশেষ কক্ষের আসল মানটি ফিরিয়ে দিতে আমি পরোক্ষ সেল রেফারেন্সিংটি এইভাবে ব্যবহার করতে পছন্দ করি:
=INDIRECT("A"&MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0)))
সানচো.এস দ্বারা প্রদত্ত পদ্ধতিটি সম্ভবত একটি ক্লিনার বিকল্প, তবে আমি সেই অংশটি সংশোধন করব যা সারি নম্বরটি খুঁজে পেয়েছে:
=INDEX(MAX((A:A<>"")*(ROW(A:A))),1)
পার্থক্যটি হ'ল ", 1" প্রথম মানটি প্রদান করে যখন ", 0" মানগুলির পুরো অ্যারে প্রদান করে (যার মধ্যে একটিও প্রয়োজনীয় নয়)। আমি এখনও সেখানে সূচক ফাংশনটিতে ঘরটিকে সম্বোধন করতে পছন্দ করি, অন্য কথায়, সেল মানটি এর সাথে ফিরিয়ে দেওয়া:
=INDIRECT("A"&INDEX(MAX((A:A<>"")*(ROW(A:A))),1))
দুর্দান্ত থ্রেড!
আপনি যদি অ্যারে ব্যবহার করতে ভয় পান না, তবে সমস্যাটি সমাধানের জন্য নিম্নলিখিতটি একটি খুব সাধারণ সূত্র:
= সমষ্টি (যদি (একটি: একটি <> "", 1,0))
আপনাকে অবশ্যই CTRL + SHIFT + ENTER টিপতে হবে কারণ এটি একটি অ্যারে সূত্র।
ঠিক আছে, সুতরাং আমার কাছে প্রশ্নকারীর মতো একই সমস্যা ছিল এবং উভয় শীর্ষ উত্তর চেষ্টা করে। তবে কেবল সূত্রের ত্রুটি হচ্ছে। পরিণত হয়েছে যে আমার "," থেকে "বিনিময় করতে হবে; সূত্রগুলি কাজ করার জন্য। আমি এক্সএল 2007 ব্যবহার করছি।
উদাহরণ:
=LOOKUP(2;1/(A:A<>"");A:A)
অথবা
=INDEX(A:A;MAX((A:A<>"")*(ROW(A:A))))