ایجاد تابعی برای نزدیک شدن ودور شدن به عددی خاص

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • reza_1001

    • 2013/10/04
    • 86

    پرسش ایجاد تابعی برای نزدیک شدن ودور شدن به عددی خاص

    سلام خدمت اساتید ودوستان محترم
    نگید سوالت عجیب غریبه چون این تابع توی نجوم کابرد داره
    من میخوام یه تابعی بنویسم که وقتی به یک عدد خاصی نزدیک میشه یه عبارت خاصی نشون بده و وقتی از اون عدد دور میشه یه عبارت دیگری نشون بده

    بازه اعداد از 0 تا 180 است و همچنین 2 نوع حرکت داریم حرکت عادی و حرکت معکوس یعنی به حرکت عادی از 0 شروع میشه تا 180 وبه حرکت معکوس از 180 به سمت 0 حرکت میکنه

    2دسته عدد داریم :
    دسته اول :اعدادی هستند که حرکت عادی ومعکوس براشون فرقی نداره که عبارتند از 0 و 180
    مثلا عدد مورد نظر 180 است ومیخوام وقتی از 170 به سمت 180 نزدیک میشه عبارت x رونشون بده و وقتی از 180 به سمت 170 نزدیک میشه عبارت y رو نشون بده وتوی عدد 0 هم همینطوره وقتی از 10 به سمت 0 میاد x رو نشون بده ووقتی از 0 به سمت 10 حرکت میکنه عبارت y رونشون بده

    دسته دوم :اعدادی هستند که حرکت عادی ومعکوس براشون فرق میکنه که اعداد مابین 0 تا 180 هستند
    مثلا عدد موردنظر 70 است که یه بار برای حرکت عادی محاسبه باید بشه و یه بار برای حرکت معکوس یعنی
    در حرکت عادی وقتی از 60 به سمت 70 حرکت میکنه عبارت x و وقتی از 70 به سمت 80 حرکت میکنه عبارت y رو نشون بده
    در حرکت معکوس وقتی از 80 به سمت 70 حرکت میکنه عبارت x و وقتی از 70 به سمت 60 حرکت میکنه عبارت y رو نشون بده
  • iranweld

    • 2015/03/29
    • 3341

    #2
    با سلام

    فعلا نمونه اولیه فایل را بررسی بفرمایید

    Click image for larger version

Name:	Untitled.png
Views:	1
Size:	39.2 کیلو بایت
ID:	135171
    فایل های پیوست شده

    کامنت

    • reza_1001

      • 2013/10/04
      • 86

      #3
      سلام خدمت iranweld ببخشیداگه نتونستم زودتر جوابتون روببینم
      خدمتتون عرض کنم که ما فقط یه عدد داریم که از تفریق دوعدد دیگر بدست میاد که همین عددی حاصل تفریقمون هست بین 0تا 180 است
      فایل مورد نظر رو براتون قرار میدم


      در فایل توضیحات رو دادم

      کامنت

      • iranweld

        • 2015/03/29
        • 3341

        #4
        با سلام

        فایل پیوست را بررسی بفرمایید.

        کد PHP:
        =IF(AND(F9-G9>=-70,F9-G9<=-60),"x",IF(AND(F9-G9>-60,F9-G9<=-50),"y","")) 
        و

        کد PHP:
        =IF(AND(F14-G14>=50,F14-G14<=60),"x",IF(AND(F14-G14>60,F14-G14<=70),"y","")) 
        و بصورت یک قرمول کلی

        کد PHP:
        =IF(AND(F9-G9>=-70,F9-G9<=-60),"x",IF(AND(F9-G9>-60,F9-G9<=-50),"y",IF(AND(F9-G9>=50,F9-G9<=60),"x",IF(AND(F9-G9>60,F9-G9<=70),"y","")))) 
        فایل های پیوست شده
        Last edited by iranweld; 2019/04/02, 12:19.

        کامنت

        • reza_1001

          • 2013/10/04
          • 86

          #5
          اولا دستتون درد نکنه
          ثانیا فایل رو دیدم ولی مشکلم حل نشد چون شما تفریق a ازb رو یکبار از 0 تا 180 (مثبت) فرض کردید و یکبار از 180 به 0 (منفی ) فرض کردید ، در حالی که در هر 2حالت اعدادی که از تابع تفریق محاسبه میشه مثبت هستند یعنی چه از سمت 0 به 180 و چه از سمت 180 به 0 .
          مشکل منم همینه که در هر 2 حالت مثبت هستند .

          کامنت

          • iranweld

            • 2015/03/29
            • 3341

            #6
            نوشته اصلی توسط reza_1001
            اولا دستتون درد نکنه
            ثانیا فایل رو دیدم ولی مشکلم حل نشد چون شما تفریق a ازb رو یکبار از 0 تا 180 (مثبت) فرض کردید و یکبار از 180 به 0 (منفی ) فرض کردید ، در حالی که در هر 2حالت اعدادی که از تابع تفریق محاسبه میشه مثبت هستند یعنی چه از سمت 0 به 180 و چه از سمت 180 به 0 .
            مشکل منم همینه که در هر 2 حالت مثبت هستند .
            لطفا بفرمایید ورودی اعداد شما هر بار دو تا عدد هستش یا یک عدد ؟

            کامنت

            • iranweld

              • 2015/03/29
              • 3341

              #7
              ضمنا تابع تفریقی که در فایل شما وجود داره در فرمول ارسالی بنده کاربرد نداره

              کامنت

              • reza_1001

                • 2013/10/04
                • 86

                #8
                2 تا عدد هست که بین 0 تا 360 هست و بایداین 2 تا عدد از هم کم بشن که حاصل تفریقشون ( با اون تابعی که در فایل هست ) همیشه بین 0 تا 180هست
                در مورد تابع تفریق خدمتتون عرض کنم که درست هست مثلا اگر عدد a ، 10 باشد و عدد b ، 250 باشه حاصل تفریشون بدون تابع -240 میشه که اشتباه هست بخاطر همین این تابع رو باید استفاده کنم که عدد حاصل تفریق همیشه بین0 تا 180 هست
                چون فرمودید تابع در فایل شما کاربرد نداره براتون مینویسم :

                Public Function تفریق(a, b, c)


                a = a - (Int(a / 360) * 360)
                b = b - (Int(b / 360) * 360)

                If a < 0 Then a = 360 + a
                If b < 0 Then b = 360 + b

                تفریق = WorksheetFunction.Min(Abs(a - b), 360 - Abs(a - b))
                If c = 1 Then تفریق = WorksheetFunction.Max(Abs(a - b), 360 - Abs(a - b))

                همچنین تابعی که خودم نوشتم برای مشکلم که خواستم تصحیحیش کنید
                Public Function asp(a)
                If a > 0 And a < 10 Then
                asp = "x"
                ElseIf a > 60 And a < 70 Then
                asp = " x"
                ElseIf a > 50 And a < 60 Then
                asp = "y"
                ElseIf a > 50 And a < 60 Then
                asp = "x "
                ElseIf a > 60 And a < 70 Then
                asp = "y "
                ElseIf a > 170 And a < 180 Then
                asp = "x"
                ElseIf a > 170 And a < 180 Then
                asp = "y"
                Else
                asp = ""
                End If
                End Function



                End Function
                Last edited by reza_1001; 2019/04/02, 15:50.

                کامنت

                چند لحظه..