کرک یک جدول داده بزرگ در اکسل دارد. هر ردیف دارای شماره وسیله نقلیه، تاریخ (جدول بر اساس این ستون مرتب شده است)، مسافت پیموده شده شروع، و مسافت پیموده شده پایانی است. او میخواهد در جدول دادهها به عقب جستجو کند تا مسافت پیموده شده پایانی را برای همان شماره وسیله نقلیه بهعنوان مسافت پیموده شده ابتدایی در ردیف فعلی بیابد - شبیه به VLOOKUP، اما از پایین به بالا به جای بالا به پایین نگاه میکند.
راه های مختلفی وجود دارد که می توانید با یک فرمول به این موضوع نزدیک شوید. برای این مثال فرض کنید که شماره وسیله نقلیه در ستون A، تاریخ در ستون B، مسافت پیموده شده شروع در ستون C، و مسافت پیموده شده در پایان در ستون D باشد. آنچه شما نیاز دارید فرمولی است که می توانید در ستون C قرار دهید که به نظر می رسد. آخرین مسافت پیموده شده برای وسیله نقلیه فعلی را افزایش دهید. فرمول زیر یک رویکرد را ارائه می دهد. باید آن را در سلول C3 قرار دهید:
=LOOKUP(2,1/FIND(A3,A$2:A2,1),D$2:D2)
شما می توانید فرمول را تا جایی که نیاز دارید در پایین ستون کپی کنید. اگر شماره وسیله نقلیه، در ستون A، زودتر در جدول داده ها ظاهر نشده باشد، فرمول خطایی مانند #VALUE را برمی گرداند! یا #N/A در این صورت، می توانید به راحتی فرمول را با مسافت پیموده شده اولیه که می خواهید برای وسیله نقلیه استفاده کنید تایپ کنید.
در اینجا روش فرمولی دیگری وجود دارد، اما این یکی باید به عنوان یک فرمول آرایه وارد شود (با فشار دادن Ctrl+Shift+Enter):
=IF(A3="","",MAX(IF(($A$2:A2=A3)*($D$2:D2),$D$2:D2)))
مجدداً فرمول را در سلول C3 قرار داده و تا جایی که لازم است آن را کپی کنید. اگر وسیله نقلیه قبلاً در جدول داده ها ظاهر نشده باشد، این مقدار خطا را بر نمی گرداند. مقدار 0 را برمی گرداند. سپس می توانید فرمول را با مسافت پیموده شده واقعی شروع برای آن وسیله نقلیه تایپ کنید. از فرمول آرایه زیر نیز می توان استفاده کرد:
=IF(A3="","",INDIRECT("D"&LARGE(($A$2:A3=A3)*ROW($2:3),2)))
تفاوت این فرمول آرایه در این است که اگر وسیله نقلیه زودتر در جدول داده ها ظاهر نشده باشد، یک #REF برمی گرداند! خطا
در اینجا دو فرمول آرایهای وجود دارد که حتی کوتاهتر هستند و میتوانید از آنها در C3 استفاده کنید (و دوباره در صورت نیاز کپی کنید):
=MAX((D$2:D2)*(--(A$2:A2=A3)))
=MAX(IF(A$2:A2=A3,D$2:D2))