ممکن است تعجب کنید که آیا راهی برای برگرداندن آخرین (نه بزرگترین) مقدار در یک ستون وجود دارد. به عنوان مثال، اگر مقادیری در A1 تا A5 وجود دارد، ممکن است بخواهید مقدار A5 برگردانده شود. بعداً، اگر مقادیر در A6 تا A8 اضافه شد، مقدار A8 باید برگردانده شود.
چند راه وجود دارد که می توان به یک راه حل نزدیک شد. اولین مورد استفاده از فرمولی مانند زیر است:
=INDEX(A:A,COUNT(A:A))
این فرمول آخرین مقدار عددی را در یک ستون برمی گرداند، مشروط بر اینکه مقادیر از (در این مورد) A1 شروع شوند. این روش تنها در صورتی کار می کند که تمام مقادیر موجود در ستون عددی باشند. اگر مقادیر غیر عددی باشند، یا اگر سلولهای خالی با مقادیر مخلوط شده باشند، یک رویکرد متفاوت ضروری است. یک راه این است که فرمول زیر را در ستون B، درست در سمت راست سلول هایی که ممکن است حاوی مقادیر باشند، کپی کنید:
=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")
در این حالت، فرمول شماره ردیف هر سلول در A را که دارای مقدار عددی بزرگتر از صفر است، برمیگرداند. سپس می توان از فرمول زیر برای بازیابی آخرین مقدار در ستون A استفاده کرد:
=INDEX(A:A,MAX(B:B))
این فرمول کار می کند زیرا بزرگترین شماره ردیف را از ستون B برمی گرداند و سپس از آن به عنوان شاخص برای برگرداندن مقدار مربوطه از ستون A استفاده می کند.
اگر نمی خواهید از ستون کمکی استفاده کنید (همانطور که در اینجا در ستون B انجام می شود)، اگر ترکیبی از مقادیر عددی و غیر عددی در ستون A وجود دارد، می توانید از فرمول زیر استفاده کنید:
=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)
این فرمول ممکن است نیاز به کمی توضیح داشته باشد. بخش ISBLANK(A:A) آرایهای را برمیگرداند که یک مقدار FALSE را در هر نقطه مربوط به سلولی در ستون A که حاوی یک مقدار است و یک مقدار TRUE در هر نقطه مربوط به سلولی در ستون A که خالی است، فهرست میکند. سپس این مقادیر TRUE/FALSE از 1 کم می شود تا به جای مقادیر TRUE/FALSE به مقادیر 0/1 تغییر کند.
سپس این آرایه با تقسیم 1 بر مقادیر 0/1 "معکوس" می شود و در نتیجه آرایه ای به وجود می آید که در هر جایی که یک مقدار در ستون A وجود دارد یک عدد و یک #DIV/0 وجود دارد! هر جا که ستون A یک سلول خالی داشته باشد، خطا دارد. در نهایت تابع LOOKUP به دنبال مقدار 2 در آرایه می گردد. آن را پیدا نمی کند (فقط 1 ها و خطاها در آرایه وجود دارد)، بنابراین آخرین "1" را در لیست برمی گرداند و در نتیجه آخرین مقدار غیر خالی را از ستون واکشی می کند.
همانطور که می توانید بگویید، بازگرداندن آخرین مقدار در یک ستون ممکن است گاهی اوقات کمی مشکل باشد. یک رویکرد تمیز این است که به سادگی تابع VBA خود را توسعه دهید که مقدار مورد نظر را برمی گرداند. در این حالت میتوانید تابع را طوری برنامهریزی کنید که هر مقداری را برگرداند - نه فقط مقادیر عددی.