عملکرد متفاوت تابع Search در بخش Find-text های عمودی یا افقی

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • sabertb

    • 2014/04/09
    • 347
    • 45.00

    [حل شده] عملکرد متفاوت تابع Search در بخش Find-text های عمودی یا افقی

    سلام به همه اساتید گرامی
    سوال من در مورد تفاوت در عملکرد تابع Search در دو حالت افقی و عمودی هست ، نمیدونم من دارم جایی رو اشتباه میکنم یا مشکل این تابع است و راه جایگزینش چی می تونه باشه
    طبق فایل پیوست اگر مشاهده کنید میبینید فرمولی که در مجموع نوشته شده در قسمت شروط عمودی جواب نمیده در صورتی که اگ همین شروط به صورت افقی نوشته شده بود خیلی خوب و دقیق جواب منو میداد حالا فکر میکنید مشکل کجاست
    فایل های پیوست شده
    :min10::min18::min13::min22:
  • M_ExceL

    • 2018/04/23
    • 677

    #2
    نوشته اصلی توسط sabertb
    سلام به همه اساتید گرامی
    سوال من در مورد تفاوت در عملکرد تابع search در دو حالت افقی و عمودی هست ، نمیدونم من دارم جایی رو اشتباه میکنم یا مشکل این تابع است و راه جایگزینش چی می تونه باشه
    طبق فایل پیوست اگر مشاهده کنید میبینید فرمولی که در مجموع نوشته شده در قسمت شروط عمودی جواب نمیده در صورتی که اگ همین شروط به صورت افقی نوشته شده بود خیلی خوب و دقیق جواب منو میداد حالا فکر میکنید مشکل کجاست
    سلام،
    البته فرمولی که نوشتید برای حالت افقی هم درست عمل نمیکنه!!
    شرایط مختلف رو امتحان کنید متوجه خواهید شد.
    و اما راه حل :
    از فرمول زیر رو برای حالت عمودی :
    کد:
    =sumproduct(--(isnumber(match($f$5:$f$22,$c$2:$c$10,0))), $g$5:$g$22)
    و فرمول زیر هم برای حالت افقی وارد کنید :
    کد:
    =sumproduct(--(isnumber(match($f$5:$f$22,$l$3:$t$3,0))), $g$5:$g$22)
    یا حق.
    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
    [/CENTER]

    کامنت

    • sabertb

      • 2014/04/09
      • 347
      • 45.00

      #3
      نوشته اصلی توسط M_ExceL
      سلام،
      البته فرمولی که نوشتید برای حالت افقی هم درست عمل نمیکنه!!
      شرایط مختلف رو امتحان کنید متوجه خواهید شد.
      و اما راه حل :
      از فرمول زیر رو برای حالت عمودی :
      کد:
      =sumproduct(--(isnumber(match($f$5:$f$22,$c$2:$c$10,0))), $g$5:$g$22)
      و فرمول زیر هم برای حالت افقی وارد کنید :
      کد:
      =sumproduct(--(isnumber(match($f$5:$f$22,$l$3:$t$3,0))), $g$5:$g$22)
      یا حق.
      ممنون از راهنماییتون ولی از این راه تو فایل اصلیم که خیلی متغیر ها و شروطش زیاد هست نتونستم استفاده کنم با توجه به این که دیتا های من داخل شبکه هستن و داشبورد دارای شروط مختلفی هست این روش جواب نداد کار Search رو نمیکنه برام ، به نظر شما چرا این تابع درست جواب نمیده
      و اینکه فرمودین تو حالت افقی هم مشکل داره میتونم بپرسم چه ایرادی را می فرمایید ؟
      :min10::min18::min13::min22:

      کامنت

      • M_ExceL

        • 2018/04/23
        • 677

        #4
        نوشته اصلی توسط sabertb
        ممنون از راهنماییتون ولی از این راه تو فایل اصلیم که خیلی متغیر ها و شروطش زیاد هست نتونستم استفاده کنم با توجه به این که دیتا های من داخل شبکه هستن و داشبورد دارای شروط مختلفی هست این روش جواب نداد کار Search رو نمیکنه برام ، به نظر شما چرا این تابع درست جواب نمیده
        و اینکه فرمودین تو حالت افقی هم مشکل داره میتونم بپرسم چه ایرادی را می فرمایید ؟
        سلام،
        راه حل دیگر استفاده از تابعی هست برای شما نوشتم، مطابق فایل پیوست می تونید از تابع زیر استفاده کنید :
        کد:
        Function SUMIFFFS(Conditions, rng, sumrng As Range) As Integer
        Dim N, T As Integer
        Dim RS As Double
            N = WorksheetFunction.CountA(Conditions)
            T = WorksheetFunction.CountA(rng)
                For b = 1 To N
                    For p = 1 To T
                        If UCase(Conditions(b)) = UCase(rng(p)) Then
                            RS = RS + sumrng(p).Value
                        End If
                    Next p
                Next b
        SUMIFFFS = RS
        End Function
        داخل سلول های سبز رنگ از تابع فوق استفاده شده است.
        در خصوص ایراد فرمول شما در فایل پیوست ایراد آن مشخص شده است.
        یا حق.
        فایل های پیوست شده
        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
        [/CENTER]

        کامنت

        • sabertb

          • 2014/04/09
          • 347
          • 45.00

          #5
          ممنون فرمول قبلی تون رو هم به فایل اضافه کردم تا بررسی کنیم وقتی فایل رو بررسی کردم دیدم که اون جوابی که می خواستم رو هنوز نمیده چون من ممکنه بخشی از عنوان رو بنویسم و بخوام جمعش رو مشاهده کنم کاری که تابع سرچ براش ساخته شده ، حالا چطور میشه همون جواب مورد نظر رو گرفت بدون این که مشکلات تابع سرچ و Match رو داشته باشیم و بتوانیم شروط دیگه ای استفاده کنیم (در اصل از راه توابع خود اکسل جواب رو نیاز دارم)
          فایل های پیوست شده
          Last edited by sabertb; 2019/07/21, 12:42.
          :min10::min18::min13::min22:

          کامنت

          • M_ExceL

            • 2018/04/23
            • 677

            #6
            نوشته اصلی توسط sabertb
            ممنون فرمول قبلی تون رو هم به فایل اضافه کردم تا بررسی کنیم ولی الان اگه فایل رو که من فرستادم باز کنید متوجه میشیم که با تغییر دیتا مورد نظر من دیگه جواب نمیده نمیدونم علتش چی هست راه نمایی میکنید ؟
            سلام، خواهش میکنم
            داخل این فایلی که فرستادید اطلاعات ستون f رو تغییر دادید، سوال اینه که آیا می خواهید شروط شما هر جایی از متن در ستون f قرار داشت اعمال بشود؟
            [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
            [/CENTER]

            کامنت

            • sabertb

              • 2014/04/09
              • 347
              • 45.00

              #7
              نوشته اصلی توسط M_ExceL
              سلام، خواهش میکنم
              داخل این فایلی که فرستادید اطلاعات ستون f رو تغییر دادید، سوال اینه که آیا می خواهید شروط شما هر جایی از متن در ستون f قرار داشت اعمال بشود؟
              بله هرجایی بود اعمال شود
              :min10::min18::min13::min22:

              کامنت

              • M_ExceL

                • 2018/04/23
                • 677

                #8
                نوشته اصلی توسط sabertb
                بله هرجایی بود اعمال شود
                سلام،
                فعلا راهی که به ذهنم میرسه همین تابعی هست که برای شما نوشته بودم و ایرادی که فرمودید رو برطرف کردم.
                کد:
                Function SUMIFFFS(Conditions, rng, sumrng As Range) As Integer
                Dim N, T As Integer
                Dim RS As Double
                    N = WorksheetFunction.CountA(Conditions)
                    T = WorksheetFunction.CountA(rng)
                        For b = 1 To N
                            For p = 1 To T
                                If InStr(1, UCase(rng(p)), UCase(Conditions(b)), 1) Then
                                    RS = RS + sumrng(p).Value
                                End If
                            Next p
                        Next b
                SUMIFFFS = RS
                End Function
                یا حق.
                [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
                [/CENTER]

                کامنت

                • sabertb

                  • 2014/04/09
                  • 347
                  • 45.00

                  #9
                  نوشته اصلی توسط M_ExceL
                  سلام،
                  فعلا راهی که به ذهنم میرسه همین تابعی هست که برای شما نوشته بودم و ایرادی که فرمودید رو برطرف کردم.
                  کد:
                  Function SUMIFFFS(Conditions, rng, sumrng As Range) As Integer
                  Dim N, T As Integer
                  Dim RS As Double
                      N = WorksheetFunction.CountA(Conditions)
                      T = WorksheetFunction.CountA(rng)
                          For b = 1 To N
                              For p = 1 To T
                                  If InStr(1, UCase(rng(p)), UCase(Conditions(b)), 1) Then
                                      RS = RS + sumrng(p).Value
                                  End If
                              Next p
                          Next b
                  SUMIFFFS = RS
                  End Function
                  یا حق.
                  ممنون لطف کردید ولی هنوز به کار من نمیاد چون خاصیت توابع خود اکسل رو نداره که بشه با لینک دادن به فایل های دیگه جواب بده ، دیتا بیس اصلی من داخل چند فایل مجزا و حجیم هست
                  :min10::min18::min13::min22:

                  کامنت

                  • M_ExceL

                    • 2018/04/23
                    • 677

                    #10
                    نوشته اصلی توسط sabertb
                    ممنون لطف کردید ولی هنوز به کار من نمیاد چون خاصیت توابع خود اکسل رو نداره که بشه با لینک دادن به فایل های دیگه جواب بده ، دیتا بیس اصلی من داخل چند فایل مجزا و حجیم هست
                    با توجه به اینکه هر بار مشکل دیگری اضافه می فرمایید بهتر این بود که شما خواستتون رو بصورت کامل و دقیق مطرح می کردید در این صورت ما هم پاسخ های جامع تری رو ارائه می دادیم.
                    اینکه می فرمایید "خاصیت توابع خود اکسل رو نداره که بشه با لینک دادن به فایل های دیگه جواب بده" متوجه نشدم.
                    شما می تونید این تابع رو بصورت add-in به اکسلتون اضافه کنید سپس مانند توابع خود اکسل می تونید در تمام فایلهاتون ازش استفاده کنید.
                    یا حق.
                    [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
                    [/CENTER]

                    کامنت

                    • sabertb

                      • 2014/04/09
                      • 347
                      • 45.00

                      #11
                      نوشته اصلی توسط M_ExceL
                      با توجه به اینکه هر بار مشکل دیگری اضافه می فرمایید بهتر این بود که شما خواستتون رو بصورت کامل و دقیق مطرح می کردید در این صورت ما هم پاسخ های جامع تری رو ارائه می دادیم.
                      اینکه می فرمایید "خاصیت توابع خود اکسل رو نداره که بشه با لینک دادن به فایل های دیگه جواب بده" متوجه نشدم.
                      شما می تونید این تابع رو بصورت add-in به اکسلتون اضافه کنید سپس مانند توابع خود اکسل می تونید در تمام فایلهاتون ازش استفاده کنید.
                      یا حق.
                      ممنون از راهنمایی های مفیدتون ولی من در واقع از اولین پستم تاکیدم روی راه حلی هست که از توابعی مانند سرچ عبور میکنه و دلیل اینکه می خواستم بفهمم چرا جواب فرمول خودم درست از آب در نمیاد این بود که درک صحیحی از کارکرد این تابع داشته باشم ، چون بدون درک این که چرا یک تابع در صورت دامنه شروط افقی و عمودی کارکردش متفاوت است در آینده هم ممکنه در موارد مشابه به خطا بر بخورم . تو رفرنس های زبان اصلی هم خیلی دنبال علت تفاوت عملکرد این تابع جستجو کردم ولی چیزی یافت نکردم برام خیلی مهم است که بدونم اصلا چطور این تابع کار میکنه که در حالت عمودی جوابی متفاوت میده و اصلا این جواب چطور محاسبه میشود.
                      بازم ممنون از وقتی که گذاشتید. هنوز دارم دنبال راهکاری از مسیر توابع خود اکسل میگردم چون خواص توابع خود اکسل در مورد لینک های خارج از فایل ها کاربردی هست ولی در زمینه Add-in و ماکرو با توجه به علم خودم نتونستم ازش استفاده کنم و همیشه مشکل داشته چون دیتا های من قالبا در فایل های متفاوتی هستن و داشبورد من ممکنه به ده ها فایل مختلف لینک داشته باشه برای ارائه گزارشات که با ماکرو نمیتونه اطلاعات را از داخل فایل های مختلف محاسبه کنه (احتمالا علم من ناقص هست در این زمینه)
                      :min10::min18::min13::min22:

                      کامنت

                      • M_ExceL

                        • 2018/04/23
                        • 677

                        #12
                        نوشته اصلی توسط sabertb
                        ممنون از راهنمایی های مفیدتون ولی من در واقع از اولین پستم تاکیدم روی راه حلی هست که از توابعی مانند سرچ عبور میکنه و دلیل اینکه می خواستم بفهمم چرا جواب فرمول خودم درست از آب در نمیاد این بود که درک صحیحی از کارکرد این تابع داشته باشم ، چون بدون درک این که چرا یک تابع در صورت دامنه شروط افقی و عمودی کارکردش متفاوت است در آینده هم ممکنه در موارد مشابه به خطا بر بخورم . تو رفرنس های زبان اصلی هم خیلی دنبال علت تفاوت عملکرد این تابع جستجو کردم ولی چیزی یافت نکردم برام خیلی مهم است که بدونم اصلا چطور این تابع کار میکنه که در حالت عمودی جوابی متفاوت میده و اصلا این جواب چطور محاسبه میشود.
                        بازم ممنون از وقتی که گذاشتید. هنوز دارم دنبال راهکاری از مسیر توابع خود اکسل میگردم چون خواص توابع خود اکسل در مورد لینک های خارج از فایل ها کاربردی هست ولی در زمینه add-in و ماکرو با توجه به علم خودم نتونستم ازش استفاده کنم و همیشه مشکل داشته چون دیتا های من قالبا در فایل های متفاوتی هستن و داشبورد من ممکنه به ده ها فایل مختلف لینک داشته باشه برای ارائه گزارشات که با ماکرو نمیتونه اطلاعات را از داخل فایل های مختلف محاسبه کنه (احتمالا علم من ناقص هست در این زمینه)
                        سلام،
                        بالاخره ایراد فرمول شما رو برای حالت عمودی تونستم برطرف کنم، کافیست از تابع transpose برای محدوده ای که شروط عمودی قرار دارند استفاده کنید
                        فرمول زیر رو بصورت آرایه ای وارد کنید:
                        کد:
                        =sum(if(iferror(search(transpose(iff),$f$5:$f$200),0)>0,$g$5:$g$200))
                        برای پی بردن به چگونگی عملکرد تابع transpose ، جستجو و مطالعه بفرمایید.
                        یا حق.
                        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
                        [/CENTER]

                        کامنت

                        چند لحظه..