উত্তর:
সুতরাং এই সমাধানটি এর প্যারামিটার হিসাবে একটি স্ট্রিং নেয়। এটি শীটে কত সারি রয়েছে তা সন্ধান করে। এটি নির্দিষ্ট কলামে সমস্ত মান পায়। এটি শেষ থেকে শুরু পর্যন্ত মানগুলির মধ্যে লুপ করে যতক্ষণ না এটি খালি স্ট্রিং নয় এমন কোনও মান খুঁজে পায়। শেষ পর্যন্ত এটি মান retunrs।
লিপি:
function lastValue(column) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
return values[lastRow - 1];
}
ব্যবহার:
=lastValue("G")
সম্পাদনা করুন:
ফাংশনটি স্বয়ংক্রিয়ভাবে আপডেট করতে বলে মন্তব্য করার প্রতিক্রিয়াতে:
উপরের কোড সহ এটি ব্যবহার করাই আমার সর্বোত্তম উপায়টি ছিল:
function onEdit(event) {
SpreadsheetApp.getActiveSheet().getRange("A1").setValue(lastValue("G"));
}
এটি ব্যবহারের বিভাগের রাজ্যের মতো কোনও ঘরে ফাংশনটি ব্যবহার করার দরকার নেই । পরিবর্তে আপনি যে সেলটি আপডেট করতে চান সেটি এবং আপনি যে কলামটি ট্র্যাক করতে চান তা কোডিং করছেন। এটি সম্ভবত বাস্তবায়নের আরও সুস্পষ্ট উপায় আছে (আশাকরি এমন একটি যা হার্ড কোডড নয়) তবে এটি এখনকার সেরা আমি খুঁজে পেতে পারি।
মনে রাখবেন যে আপনি সেলটিতে ফাংশনটি আগে বর্ণিত মত ব্যবহার করলে এটি পুনরায় লোডের পরে আপডেট হবে। সম্ভবত सेल onEdit()
ফাংশনগুলিতে প্রবেশ করার এবং আপডেট করার জন্য বাধ্য করার কোনও উপায় রয়েছে । আমি কেবল এটি ডকুমেন্টেশনে খুঁজে পাচ্ছি না।
ক্যালিগরির উত্তরের অনুরূপ উত্তর , তবে আমরা কেবল পুরো কলামের ব্যাপ্তি নির্দিষ্ট করে এটি পরিষ্কার করতে পারি:
=INDEX(G2:G, COUNT(G2:G))
FILTER()
যে @ গেটার জবাবের অনুরূপ কোনও এড রেঞ্জের মধ্যে প্রথম, শেষ বা নবম সারিটি কীভাবে পাবেন ।
COUNT(G2:G)
রিটার্ন 0. পরিবর্তে ব্যবহার COUNTA(G2:G)
, মোট ছাত্র যে শুধুমাত্র একটি ডেটাসেটের কতগুলি মানের সংখ্যা। আপনার মানগুলির মধ্যে একটি ফাঁকা না থাকলে কেবল সর্বশেষ মানটি COUNTA
মিলিয়ে দরকারী INDEX
।
COUNTA
। COUNT
কেবলমাত্র সাংখ্যিক মান গণনা করা হয়: যেমন পাঠ্য ঘরগুলি দেওয়া হলে এটি 0 ফিরে আসবে।
আসলে আমি এখানে একটি সহজ সমাধান পেয়েছি:
http://www.google.com/support/forum/p/Google+Docs/thread?tid=20f1741a2e663bca&hl=en
দেখে মনে হচ্ছে:
=FILTER( A10:A100 , ROW(A10:A100) =MAX( FILTER( ArrayFormula(ROW(A10:A100)) , NOT(ISBLANK(A10:A100)))))
ROW
আয় সারি সংখ্যা, তাই FILTER( ROW(A10:A100), NOT(ISBLANK(A10:A100) )
সমস্ত অ-ফাঁকা সারি সংখ্যার একটি অ্যারের (তাদের মান), উদাহরণস্বরূপ [1,2, 3, 7, 12, 14] জন্য ফেরৎ। তারপরে MAX
আমাদের শেষ সারির নম্বর দেয়। FILTER
তারপরে একটি সেকেন্ড প্রয়োগ করা হয় যেখানে সমস্ত সারিটি ফিল্টার করে যেখানে সারি নম্বরটি মানটির সাথে মেলে না MAX
(যেমন শেষ শূন্য সারির মান)।
একটি ব্যাপ্তির মধ্যে শেষ কক্ষটি নির্বাচন করতে এই মুহুর্তে শেষ () ফাংশনটি প্রয়োগ করা হয় না। তবে, আপনার উদাহরণ অনুসরণ:
=LAST(G2:G9999)
আমরা এই পদ্ধতিতে INDEX () এবং COUNT () এর কয়েকটি কার্যকারিতা ব্যবহার করে সর্বশেষ সেলটি অর্জন করতে সক্ষম হয়েছি :
=INDEX(G2:G; COUNT(G2:G))
স্প্রিডশিটে একটি জীবন্ত উদাহরণ রয়েছে যেখানে আমি একই সমস্যাটি পেয়েছি (এবং সমাধান করেছি) (শীট Orzamentos
, ঘর I5
)। নোট করুন যে এটি ডকুমেন্টের মধ্যে অন্য শিটগুলিকে রেফারিং করার জন্যও নিখুঁতভাবে কাজ করে।
COUNTA
আপনি যদি নিশ্চিত হন যে কলামের মানগুলির মধ্যে একটি ফাঁকা নেই, তবে আপনি সেই ক্ষেত্রে জোনস্কাইডার ব্যবহার করতে পারেন । দোহমূসের জবাব আমার মন্তব্য দেখুন।
:G
শেষ উপাদানটি বোঝায় কেন ? এটি কি নথিভুক্ত?
=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNTA(G2:G) )
আমি বেশ কয়েকটি উত্তর দেখেছি এবং চেষ্টা করেছি এবং আমি যা পেয়েছি তা এখানে: সহজ সমাধান ( দোহমুসের উত্তর দেখুন ) ফাঁকা না থাকলে কাজ করে:
=INDEX(G2:G; COUNT(G2:G))
আপনার যদি ফাঁকা থাকে, এটি ব্যর্থ হয়।
আপনি শুধু থেকে পরিবর্তন করে এক ফাঁকা সব ব্যবস্থা করতে সক্ষম COUNT
করার জন্য COUNTA
(দেখুন user3280071 এর উত্তর ):
=INDEX(G2:G; COUNTA(G2:G))
যাইহোক, এটি ফাঁকা কিছু সংমিশ্রনের জন্য ব্যর্থ হবে। ( 1 blank 1 blank 1
আমার জন্য ব্যর্থ।)
নিম্নলিখিত কোডটি কাজ করে ( নাদেরের উত্তর এবং জেসনের মন্তব্য দেখুন ):
=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , ROWS( FILTER( G2:G , NOT(ISBLANK(G2:G)) ) ) )
তবে এটির জন্য আপনি ব্যবহার করতে চান কিনা COLUMNS
বা ROWS
প্রদত্ত ব্যাপ্তির জন্য চিন্তা করা দরকার ।
তবে, যদি COLUMNS
প্রতিস্থাপন করা হয় তবে COUNT
আমি মনে করি এটির একটি নির্ভরযোগ্য, ফাঁকা-প্রমাণ বাস্তবায়ন পেয়েছি LAST
:
=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNT( FILTER( G2:G , NOT(ISBLANK(G2:G)) ) ) )
এবং যেহেতু COUNTA
ফিল্টারটি অন্তর্নির্মিত হয়েছে, আমরা আরও ব্যবহার করে আরও সহজ করতে পারি
=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNTA(G2:G) )
এটি কিছুটা সহজ এবং সঠিক। এবং আপনাকে সারি বা কলামগুলি গণনা করতে হবে তা নিয়ে চিন্তা করতে হবে না। এবং স্ক্রিপ্ট সমাধানগুলির বিপরীতে, এটি স্প্রেডশিটে পরিবর্তিত হয়ে স্বয়ংক্রিয়ভাবে আপডেট হয়।
এবং আপনি যদি এক সারিতে সর্বশেষ মান পেতে চান তবে কেবল ডেটা সীমাটি পরিবর্তন করুন:
=INDEX( FILTER( A2:2 , NOT(ISBLANK(A2:2))) , COUNTA(A2:2) )
পাঠ্য মানগুলির একটি কলাম থেকে শেষ মানটি ফিরে আসার জন্য আপনাকে COUNTA ব্যবহার করা দরকার, সুতরাং আপনার এই সূত্রটি দরকার:
=INDEX(G2:G; COUNTA(G2:G))
COUNTA
সাথে মিলিয়ে INDEX
কলামের শেষ মানটি ফেরত দেয় না।
এটা চেষ্টা কর:
=INDIRECT("B"&arrayformula(max((B3:B<>"")*row(B3:B))))
ধরুন আপনি যে কলামটিতে শেষ মানটি খুঁজছেন তা হ'ল বি।
এবং হ্যাঁ, এটি ফাঁকা সাথে কাজ করে।
দেখে মনে হচ্ছে গুগল অ্যাপস স্ক্রিপ্ট এখন ফাংশন প্যারামিটার হিসাবে রেঞ্জগুলিকে সমর্থন করে। এই সমাধানটি একটি ব্যাপ্তি গ্রহণ করে:
// Returns row number with the last non-blank value in a column, or the first row
// number if all are blank.
// Example: =rowWithLastValue(a2:a, 2)
// Arguments
// range: Spreadsheet range.
// firstRow: Row number of first row. It would be nice to pull this out of
// the range parameter, but the information is not available.
function rowWithLastValue(range, firstRow) {
// range is passed as an array of values from the indicated spreadsheet cells.
for (var i = range.length - 1; i >= 0; -- i) {
if (range[i] != "") return i + firstRow;
}
return firstRow;
}
গুগল অ্যাপস স্ক্রিপ্ট সহায়তা ফোরামেও আলোচনাটি দেখুন: আমি কীভাবে সূত্রগুলি পুনরায় গণনা করতে বাধ্য করব?
আমি পূর্ববর্তী উত্তরগুলি দেখেছি এবং তারা মনে হচ্ছে তারা খুব পরিশ্রম করছে। সম্ভবত স্ক্রিপ্টিং সমর্থনটি উন্নত হয়েছে। আমি মনে করি ফাংশনটি এভাবে প্রকাশ করা হয়েছে:
function lastValue(myRange) {
lastRow = myRange.length;
for (; myRange[lastRow - 1] == "" && lastRow > 0; lastRow--)
{ /*nothing to do*/ }
return myRange[lastRow - 1];
}
আমার স্প্রেডশিটে আমি এর পরে ব্যবহার করব:
= lastValue(E17:E999)
ফাংশনে, আমি রেফারেন্সড সেল প্রতি এক সাথে মানগুলির একটি অ্যারে পাই এবং এটি কেবল অ্যারেটির প্রান্ত থেকে পিছনের দিকে পুনরুক্ত হয় যতক্ষণ না এটি একটি খালি শুল্ক খুঁজে না পায় বা উপাদানগুলির বাইরে চলে যায়। ফাংশনে ডেটা দেওয়ার আগে শিট রেফারেন্সগুলি ব্যাখ্যা করা উচিত। একাধিক মাত্রা পরিচালনা করার জন্য যথেষ্ট অভিনব নয়। প্রশ্নটি একটি একক কলামে সর্বশেষ কক্ষটি চেয়েছিল, তাই এটি খাপ খায় বলে মনে হচ্ছে। আপনার ডেটাও ফুরিয়ে গেলে সম্ভবত এটি মারা যাবে।
আপনার মাইলেজ ভিন্ন হতে পারে, তবে এটি আমার জন্য কার্যকর।
এটি সর্বশেষ মান পায় এবং খালি মানগুলি পরিচালনা করে:
=INDEX( FILTER( H:H ; NOT(ISBLANK(H:H))) ; ROWS( FILTER( H:H ; NOT(ISBLANK(H:H)) ) ) )
=INDEX( FILTER( 88:88 , NOT(ISBLANK(88:88))) , columns( FILTER( 88:88 , NOT(ISBLANK(88:88)) ) ) )
=INDEX( FILTER( indirect(row()&":"&row()) , NOT(ISBLANK(indirect(row()&":"&row())))) , columns( FILTER( indirect(row()&":"&row()) , NOT(ISBLANK(indirect(row()&":"&row()))) ) ) )
উত্তর
$ =INDEX(G2:G; COUNT(G2:G))
LibreOffice এ সঠিকভাবে কাজ করে না। তবে, একটি ছোট পরিবর্তন সঙ্গে, এটি নিখুঁতভাবে কাজ করে।
$ =INDEX(G2:G100000; COUNT(G2:G100000))
সত্য পরিসীমা এর চেয়ে ছোট হলে এটি সর্বদা কাজ করে (G2:G10000)
কঠোরভাবে বন্ধ প্রশ্নের সাথে মূল প্রশ্নের উত্তর দেওয়া কি গ্রহণযোগ্য? :) এটি করার জন্য আপনি স্প্রেডশীটে একটি সূত্র লিখতে পারেন। কুৎসিত সম্ভবত? তবে স্প্রেডশিটের সাধারণ অপারেটিংয়ে কার্যকর।
=indirect("R"&ArrayFormula(max((G:G<>"")*row(G:G)))&"C"&7)
(G:G<>"") gives an array of true false values representing non-empty/empty cells
(G:G<>"")*row(G:G) gives an array of row numbers with zeros where cell is empty
max((G:G<>"")*row(G:G)) is the last non-empty cell in G
এটি স্ক্রিপ্ট অঞ্চলে এমন অনেক প্রশ্নের জন্য একটি চিন্তার প্রস্তাব দেওয়া হয় যা অ্যারের সূত্রগুলির সাথে নির্ভরযোগ্যভাবে বিতরণ করা যেতে পারে যা প্রায়শই এক্সেল এবং ওপেন অফিসে একই ধরণের ফ্যাশনে কাজ করার সুবিধা রয়েছে ।
আমি @ টিনফিনি প্রদত্ত কোডটি নিয়ে খেলছিলাম, এবং আমি ভেবেছিলাম যে লোকেরা আমার কাছে কিছুটা মার্জিত সমাধান বলে মনে হয় তার থেকে উপকৃত হতে পারে (নোট আমি মনে করি না যে তিনি যখন মূল উত্তরটি তৈরি করেছিলেন তখন স্ক্রিপ্টগুলি ঠিক একইভাবে কাজ করেছিল) ...
//Note that this function assumes a single column of values, it will
//not function properly if given a multi-dimensional array (if the
//cells that are captured are not in a single row).
function LastInRange(values)
{
for (index = values.length - 1; values[index] == "" && index > 0; index--) {}
return String(values[index]);
}
ব্যবহারের ক্ষেত্রে এটি দেখতে এই রকম হবে:
=LastInRange(D2:D)
আমি খুঁজে পেয়েছি অন্য উপায় হতে পারে এটি আপনাকে সাহায্য করবে
=INDEX( SORT( A5:D ; 1 ; FALSE) ; 1 )
- শেষ সারিতে ফিরে আসবে
আনাব থেকে আরও তথ্য এখানে: https://groups.google.com/forum/?fromgroups=#!topic/How-to- ডকুমেন্টস / আইফ0_fGVINmI
আমি অবাক হয়েছি এর আগে এর আগে কেউ এই উত্তর কখনও দেয়নি। তবে এটি সবচেয়ে কম হওয়া উচিত এবং এটি এক্সেলেও কাজ করে:
=ARRAYFORMULA(LOOKUP(2,1/(G2:G<>""),G2:G))
G2:G<>""
1 / সত্য (1) এবং 1 / মিথ্যা (0) এর অ্যারে তৈরি করে। যেহেতু LOOKUP
এটি অনুসন্ধানের জন্য একটি শীর্ষ ডাউন পদ্ধতির কাজ করে 2
এবং যেহেতু এটি কখনই 2 টি খুঁজে পাবে না, এটি শেষ নন ফাঁকা সারি পর্যন্ত আসে এবং এটির অবস্থান দেয়।
এটি করার অন্য উপায়টি যেমন অন্যেরা উল্লেখ করেছেন, তা হ'ল:
=INDEX(G2:G,MAX((ISBLANK(G2:G)-1)*-ROW(G2:G))-1)
খোঁজা MAX
imum ROW
অ ফাঁকা সারির এবং তা খাওয়ানোরINDEX
শূন্য ফাঁকা বাধা অ্যারেতে, INDIRECT
RC
স্বরলিপি সহ ব্যবহার COUNTBLANK
করা অন্য বিকল্প। যদি ভি 4: ভি 6 এন্ট্রি সহ দখল করে থাকে, তবে,
ভি 18 :
=INDIRECT("R[-"&COUNTBLANK(V4:V17)+1&"]C",0)
ভি 6 এর অবস্থান দেবে।
Tools -> Scripts -> Script editor...