PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [حل شده] جستجوی یک سریال بین داده های ابتدا و انتهای بازه



Imanfy
2018/01/02, 10:17
سلام به همه دوستان
من میخوام یک شماره سریال رو بین تعدادی داده جستجو کنم داده های من به این صورت ه که ردیف به ردیف محدوده هایی از سریالها رو دارم که در ستون a قرار دارند. و تاریخ مربوط به این بازه ها در ستون b مقابل هر بازه قرار داره.
این محدوده ها رو مرتب کردم و به صورت تفکیک شده در سه ستون شامل کد محصول، عدد ابتدای شماره سریال و عدد انتهای شماره سریال قرار دادم و تاریخ رو هم در ستون بعدیش کپی کردم.
حالا میخوام با وارد کردن یک شماره سریال بتونم تشخیص بدم که این سریال مربوط به کدوم تاریخ خرید میشه. ضمن این که میتونم شماره سریال رو هم تفکیک کنم و در ۲ ستون قرار بدم.
کسی راه حلی داره که بشه از طریق فرمول یا ماکرو این کار رو انجام داد.
15978

Amir Ghasemiyan
2018/01/02, 14:58
سلام دوست عزيز
براي بدست آوردن كد ميتونين از فرمول زير استفاده كنيد:


=IF(LEFT(I3,2)="CC",LEFT(I3,3),LEFT(I3,2))


براي بدست آوردن عددش از فرمول زير استفاده كنيد:


=VALUE(RIGHT(I3,LEN(I3)-LEN(I8)))


براي بدست آوردن تاريخ هم ميتونين از فرمول زير بصورت آرايه اي استفاده كنيد:


=IFERROR(INDIRECT("G"&SUM((D3:D9=I8)*(E3:E9<=J8)*(F3:F9>=J8)*(ROW(G3:G9)-2))),"Not Available")

Imanfy
2018/01/02, 15:46
سلام دوست عزيز
براي بدست آوردن كد ميتونين از فرمول زير استفاده كنيد:


=IF(LEFT(I3,2)="CC",LEFT(I3,3),LEFT(I3,2))


براي بدست آوردن عددش از فرمول زير استفاده كنيد:


=VALUE(RIGHT(I3,LEN(I3)-LEN(I8)))


براي بدست آوردن تاريخ هم ميتونين از فرمول زير بصورت آرايه اي استفاده كنيد:


=IFERROR(INDIRECT("G"&SUM((D3:D9=I8)*(E3:E9<=J8)*(F3:F9>=J8)*(ROW(G3:G9)-2))),"Not Available")



بسیار سپاس
فرمول جدا سازی رو انجام داده بودم
فقط یه سوال چرا توی آرایه ردیف رو منهای ۲ کردید؟؟؟
در ضمن اگه ممکنه آرایه رو هم توضیح بفرمایید

Amir Ghasemiyan
2018/01/02, 15:57
بسیار سپاس
فرمول جدا سازی رو انجام داده بودم
فقط یه سوال چرا توی آرایه ردیف رو منهای ۲ کردید؟؟؟
در ضمن اگه ممکنه آرایه رو هم توضیح بفرمایید

اون اشتباه شده. ببخشيد. صحيحش بدون تفريق هست:


=IFERROR(INDIRECT("G"&SUM((D3:D9=I8)*(E3:E9<=J8)*(F3:F9>=J8)*(ROW(G3:G9)))),"Not Available")


بحث آرايه خيلي گستردس نميشه تو يكي دو جمله تعريف كرد. بطور خيلي سربسته و خلاصه بخوام بگم يكي از خاصيت هاي آرايه اي نوشتن يك فرمول اينه كه داخل يك سلول شما ميتونين يك رنج داده رو بگنجونين و محاسباتتون رو روي اون انجام بدين. مثلا همين فرمول رو كه نوشتم evaluate كنيد و مرحله به مرحله بريد جلو متوجه ميشيد چي ميگم

يكم تو انجمن سرچ كنيد اطلاعات و نمونه هاي خوبي پيدا ميكنيد.
تو فروشگاه هم محصولي در اين خصوص داريم كه به نظرم خيلي ميتونه مفيد باشه
بسته آموزشی فرمول نویسی آرایه ای - جامعه اكسل ايرانيان (http://www.exceliran.com/downloads/204/)

Imanfy
2018/01/03, 12:30
اون اشتباه شده. ببخشيد. صحيحش بدون تفريق هست:


=iferror(indirect("g"&sum((d3:d9=i8)*(e3:e9<=j8)*(f3:f9>=j8)*(row(g3:g9)))),"not available")


بحث آرايه خيلي گستردس نميشه تو يكي دو جمله تعريف كرد. بطور خيلي سربسته و خلاصه بخوام بگم يكي از خاصيت هاي آرايه اي نوشتن يك فرمول اينه كه داخل يك سلول شما ميتونين يك رنج داده رو بگنجونين و محاسباتتون رو روي اون انجام بدين. مثلا همين فرمول رو كه نوشتم evaluate كنيد و مرحله به مرحله بريد جلو متوجه ميشيد چي ميگم

يكم تو انجمن سرچ كنيد اطلاعات و نمونه هاي خوبي پيدا ميكنيد.
تو فروشگاه هم محصولي در اين خصوص داريم كه به نظرم خيلي ميتونه مفيد باشه
بسته آموزشی فرمول نویسی آرایه ای - جامعه اكسل ايرانيان (http://www.exceliran.com/downloads/204/)
فایلی که به عنوان مثال ارسال کردم دارای رکوردهای کمی هست.
زمانی که تعداد رکورد ها زیاد میشه جواب نمیده
البته با استفاده از دستورات ترکیبی if و استفاده از فیلتر اکسل تونستم کارم رو راه بندازم اما کماکان مشتاق این هستم که روشی رو به دست بیارم که با فرمول یا ماکرو بتونم این کار رو انجام بدم

Imanfy
2018/01/10, 18:35
سلام به همه با استفاده از چند دستور if و ترکیبشون کارم رو راه انداختم
ممنون