PDA

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



scott
2010/11/06, 12:01
سلام
خسته نباشید.
من نیاز به یک کد در داخل اکسل دارم که وقتی در ستون اول 3 تا عدد وارد می کنم در ردیف دوم اعداد را به ترتیب از بزرگتر به کوچکتر خودش مرتب کنه.
اساتبد راهنمایی می فرمایید.
با تشکر

shamsololama
2010/11/06, 17:31
با درود فراوان

"وقتی در ستون اول 3 تا عدد وارد می کنم در ردیف دوم اعداد را به ترتیب از بزرگتر به کوچکتر خودش مرتب کنه"
اگر منظور شما اینه که وقتی در ستون اول سه تا عدد وارد کنید در ستون دوم همان سه عدد را برایمان به ترتیب سورت کرده و از بزرگتر به کوچکتر مرتب کند . به دو روش می توانی این کار را انجام دهی یا تابع و یا با کدنویسی

با کد نویسی


Sub Macro1()
'
' Macro3 Macro
' Macro recorded 2010/11/06 by security
'

'
Columns("A:A").Select
Selection.Copy
Columns("B:B").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B1").Select
End Sub


با تابع از ترکیب دو فرومول index , match با تابع Rank می توانی به نتیجه برسی


=RANK(B2,$B$2:$B$30)
و

=INDEX($B$2:$B$31,MATCH(1,$A$2:$A$31,0))

در فایل ضمیمه در شیت یک با تابع و در شیت دو با ماکرو آماده کردم
و اگر منظور شما چیزی غیر از این بود توضیح بیشتر بدهید تا من یا دوستان جواب بدهیم

فایل نمونه

[attachment=95]

scott
2010/11/06, 19:52
ممنون از راهنمایی شما دوست عزیز
فقط میشه همین کار رو با 3 تا تابع and , if , or انجام داد ؟؟
سپاس از لطف شما

در مورد تابع هم میشه توضیح بدید چی کار کردید ؟ البته به ما گفتند اگر میتونید با and , if , or بنویسید

shamsololama
2010/11/07, 07:36
با دورد فراوان

برای اینکار با تابع if و And می توانی این کار را انجام دهی ولی برای بیشتر از سه عدد به مشکل بر می خوری که به این صورت می توانی تابع را بنویسی

سل اول از ستون دوم
=IF(AND(A2>A3, A2>A4),A2,IF(AND(A3>A2, A3>A4),A3,A4))

سل دوم از ستون دوم

=IF(AND(A2<B2,A2>B4),A2,(IF(AND(A3<B2,A3>B4),A3,A4)))
سل سوم از ستون دوم
=IF(AND(A2<A3,A2<A4),A2,IF(AND(A3<A2,A3<A4),A3,A4))


و مشکل دیگه این تابع این است که اگر اعداد تکرای و برابر باشند با خطا روبرو می شود


در تابع قبل چون از تابع رنک استفاده کرده ایم لذا به محدودیت و یا خطا روبرو نمی شویم تابع Rank در واقع در ستون ترتیب بزرگی به کوچکی را برای ما مشخص می کند و با تابع index وMatch آن را فراخوانی می کنیم
ولی با استفاده از Or و َAnd و If وقتی تعداد سلهایی بیشتری داشته باشیم تابع زیاد و پیچیده می شود


تابع if در شیت سه نوشته شده
فایل ضمیمه:


[attachment=96]