جستجو مقادیر حروفی میان دو رقم در یک ستون

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

    • 2013/05/17
    • 450

    پرسش جستجو مقادیر حروفی میان دو رقم در یک ستون

    با سلام و خسته نباشید به دوستان
    می خوام یه مقدار حروفی رو در یک رنج از سلول های یک ستون جستجو کنم. چه تابع و یا توابعی باید استفاده کنم؟
    برای توضیحات بیشتر و مفصل تر یه نمونه فایل گذاشتم و داخلش توضیحات لازم رو دادم.
    ممنون میشم راهنمایی کنید.
    با تشکر
    فایل های پیوست شده
  • حسام بحرانی

    • 2013/09/29
    • 2065
    • 72.00

    #2
    سلام
    در کنار
    بابت: این فرمول رو بصورت آرایه ای بنویسید:
    کد PHP:
    =index(d2:d8;match(min(abs($i$1-b2:b8));abs($i$1-b2:b8);0)) 
    و در کنار
    مبلغ: این فرمول رو بنویسید:
    کد PHP:
    =index(c2:c8;match(l1;d2:d8;0)) 
    موفق باشید.
    فایل های پیوست شده
    [CENTER][B][SIZE=5][COLOR=#006600][FONT=georgia][COLOR=#800000]!With [/COLOR][/FONT][/COLOR][COLOR=#006600][FONT=georgia]God [/FONT][/COLOR][COLOR=#006600][FONT=georgia][COLOR=#800000]all [/COLOR][/FONT][/COLOR][COLOR=#800000][FONT=georgia]things are [/FONT][/COLOR][COLOR=#006600][FONT=georgia]possible[/FONT][/COLOR][/SIZE][/B][B][FONT=Tahoma]
    [/FONT][/B][/CENTER]
    [CENTER][B][FONT=Tahoma] [IMG]http://forum.exceliran.com/attachment.php?attachmentid=5334&d=1419428336[/IMG]
    [/FONT][/B][SIZE=1][FONT=Tahoma][B][FONT=Tahoma]
    [/FONT][/B][/FONT][/SIZE]
    [/CENTER]

    کامنت

    • maziardm

      • 2013/05/17
      • 450

      #3
      نوشته اصلی توسط حسام بحرانی
      سلام
      در کنار
      بابت: این فرمول رو بصورت آرایه ای بنویسید:
      کد PHP:
      =index(d2:d8;match(min(abs($i$1-b2:b8));abs($i$1-b2:b8);0)) 
      و در کنار
      مبلغ: این فرمول رو بنویسید:
      کد PHP:
      =index(c2:c8;match(l1;d2:d8;0)) 
      موفق باشید.
      سلام و تشکر از پاسخ خوبتون
      جوابم رو گرفتم.
      حالا یه سوال دیگه در ادامه داشتم. اینکه اگر بخواهیم یک شرط دیگه هم اضافه کنیم باید چکار کنیم. یعنی علاوه بر ستون های موجود یه ستون دیگه تحت عنوان نام کاربر داشته باشیم که در عملیات جستجو در نظر گرفته بشه.
      فایل نمونه رو پیوست کردم
      با تشکر
      فایل های پیوست شده

      کامنت

      • M_ExceL

        • 2018/04/23
        • 677

        #4
        نوشته اصلی توسط maziardm

        حالا یه سوال دیگه در ادامه داشتم. اینکه اگر بخواهیم یک شرط دیگه هم اضافه کنیم باید چکار کنیم. یعنی علاوه بر ستون های موجود یه ستون دیگه تحت عنوان نام کاربر داشته باشیم که در عملیات جستجو در نظر گرفته بشه.
        سلام،
        می تونید از تابعی که برای این منظور نوشتم طبق فایل پیوست استفاده کنید :
        کد PHP:
        Function M_EA(cel1rng1cel2rng2rng3 As Range) As String
        Set f 
        rng1
        Set r 
        rng2
        Set t 
        rng3
        f.Value
        For LBound(nTo UBound(n)
        If 
        cel1 f(i) And cel2 r(iThen
        M_EA 
        t(i).Offset(0, -1).Text " " Chr(200) & Chr(199) & Chr(200) & Chr(202) & " " t(i)
        Exit Function
        ElseIf 
        f(i) - cel1 And f(i) - cel1 > -And cel2 r(iThen
        M_EA 
        t(i).Offset(0, -1).Text " " Chr(200) & Chr(199) & Chr(200) & Chr(202) & " " t(i)
        End If
        Next i
        End 
        Function 
        فایل های پیوست شده
        [CENTER]Telegram Channel : [url]https://t.me/UltraOfficeSkills[/url]
        [/CENTER]

        کامنت

        • maziardm

          • 2013/05/17
          • 450

          #5
          نوشته اصلی توسط m_excel
          سلام،
          می تونید از تابعی که برای این منظور نوشتم طبق فایل پیوست استفاده کنید :
          کد PHP:
          function m_ea(cel1rng1cel2rng2rng3 as range) as string
          set f 
          rng1
          set r 
          rng2
          set t 
          rng3
          f.value
          for lbound(nto ubound(n)
          if 
          cel1 f(i) and cel2 r(ithen
          m_ea 
          t(i).offset(0, -1).text " " chr(200) & chr(199) & chr(200) & chr(202) & " " t(i)
          exit function
          elseif 
          f(i) - cel1 and f(i) - cel1 > -and cel2 r(ithen
          m_ea 
          t(i).offset(0, -1).text " " chr(200) & chr(199) & chr(200) & chr(202) & " " t(i)
          end if
          next i
          end 
          function 
          با سلام
          تشکر از پاسختون. مفید و کارآمده.
          فقط یه موضوع اینکه آیا راهی به غیر از vba داره؟ مثلا همون فرمول ابتدایی که آقای بحرانی نوشتند رو تغییر داد و یک شرط بهش اضافه کرد؟
          با تشکر دوباره

          کامنت

          • حسام بحرانی

            • 2013/09/29
            • 2065
            • 72.00

            #6
            افزودن شرط در جستجو

            سلام دوست عزیز
            برای آن فرمول هم می تونید شرط بذارید و فرمول رو به شکل زیر و بصورت
            آرایه ای
            تغییر بدید:
            کد PHP:
            =index(e2:e13;match(min(if(c2:c13=l1;abs($j$1-b2:b13)));if(c2:c13=l1;abs($j$1-b2:b13));0)) 
            نکته ای که باید توجه کنید درخصوص مبلغ هست. فرمول بالا
            بابت کار انجام شده رو مشخص می کنه و

            برای مبلغ می بایست جستجو رو بر اساس ستون
            مبلغ ( ستون D ) بررسی کنه و فرمول اون بصورت زیر است:
            کد PHP:
            =INDEX(D2:D13;MATCH(MIN(IF(C2:C13=L1;ABS($J$1-B2:B13)));IF(C2:C13=L1;ABS($J$1-B2:B13));0)) 
            موفق باشید.


            فایل های پیوست شده
            Last edited by حسام بحرانی; 2019/06/05, 21:58. دلیل: توضیحات بیشتر
            [CENTER][B][SIZE=5][COLOR=#006600][FONT=georgia][COLOR=#800000]!With [/COLOR][/FONT][/COLOR][COLOR=#006600][FONT=georgia]God [/FONT][/COLOR][COLOR=#006600][FONT=georgia][COLOR=#800000]all [/COLOR][/FONT][/COLOR][COLOR=#800000][FONT=georgia]things are [/FONT][/COLOR][COLOR=#006600][FONT=georgia]possible[/FONT][/COLOR][/SIZE][/B][B][FONT=Tahoma]
            [/FONT][/B][/CENTER]
            [CENTER][B][FONT=Tahoma] [IMG]http://forum.exceliran.com/attachment.php?attachmentid=5334&d=1419428336[/IMG]
            [/FONT][/B][SIZE=1][FONT=Tahoma][B][FONT=Tahoma]
            [/FONT][/B][/FONT][/SIZE]
            [/CENTER]

            کامنت

            • maziardm

              • 2013/05/17
              • 450

              #7
              نوشته اصلی توسط حسام بحرانی
              سلام دوست عزیز
              برای آن فرمول هم می تونید شرط بذارید و فرمول رو به شکل زیر و بصورت
              آرایه ای
              تغییر بدید:
              کد PHP:
              =index(e2:e13;match(min(if(c2:c13=l1;abs($j$1-b2:b13)));if(c2:c13=l1;abs($j$1-b2:b13));0)) 
              نکته ای که باید توجه کنید درخصوص مبلغ هست. فرمول بالا
              بابت کار انجام شده رو مشخص می کنه و

              برای مبلغ می بایست جستجو رو بر اساس ستون
              مبلغ ( ستون d ) بررسی کنه و فرمول اون بصورت زیر است:
              کد PHP:
              =index(d2:d13;match(min(if(c2:c13=l1;abs($j$1-b2:b13)));if(c2:c13=l1;abs($j$1-b2:b13));0)) 
              موفق باشید.


              سلام و تشکر حسام جان
              فرمول و فایلی که گذاشتی یه مشکل کوچیک داره
              اگر جدول بر اساس ستون طبقه سورت کنیم و در سلول j1 برای مثال 9600 یا هر عدد کوچکتر از 9601 رو بزنیم (نام کاربربیش فرقی نمی کنه: چون کوچکترین طبقه با هر نام کاربری 9601 هستش) قاعدتا جواب باید صفر باشد. چون لولین طبقه چه برای کاربر 1 و چه کاربر 2 طبقه 9601 هستش و بزرگتر از 9600 هستش.
              یا مثلا اینکه با وارد کردن عدد 9844 (یا هر عددی بین 9835 تا 9844) و نام کاربری 1 باید در سلول بابت مقدار پردازش رو پیدا کنه (نزدیکترین طبقه قبلی 9835 و نام کاربری 1) در حالیکه مقدار رفتار سازمانی رو نشون میده (نزدیکترین طبقه بعدی با نام کاربری 1 که 9845 باشه)
              با توضیحات بالا متوجه شدم که اصل فرمول شما کاملا صحیحه فقط اینکه باید نزدیکترین طبقه قبلی رو جستجو و پیدا کنه در حالیکه نزدیکترین طبقه بعدی رو پیدا می کنه.
              امیدوارم منظورم رو خوب رسونده باشم
              با تشکر

              کامنت

              • maziardm

                • 2013/05/17
                • 450

                #8
                نوشته اصلی توسط maziardm
                سلام و تشکر حسام جان
                فرمول و فایلی که گذاشتی یه مشکل کوچیک داره
                اگر جدول بر اساس ستون طبقه سورت کنیم و در سلول j1 برای مثال 9600 یا هر عدد کوچکتر از 9601 رو بزنیم (نام کاربربیش فرقی نمی کنه: چون کوچکترین طبقه با هر نام کاربری 9601 هستش) قاعدتا جواب باید صفر باشد. چون لولین طبقه چه برای کاربر 1 و چه کاربر 2 طبقه 9601 هستش و بزرگتر از 9600 هستش.
                یا مثلا اینکه با وارد کردن عدد 9844 (یا هر عددی بین 9835 تا 9844) و نام کاربری 1 باید در سلول بابت مقدار پردازش رو پیدا کنه (نزدیکترین طبقه قبلی 9835 و نام کاربری 1) در حالیکه مقدار رفتار سازمانی رو نشون میده (نزدیکترین طبقه بعدی با نام کاربری 1 که 9845 باشه)
                با توضیحات بالا متوجه شدم که اصل فرمول شما کاملا صحیحه فقط اینکه باید نزدیکترین طبقه قبلی رو جستجو و پیدا کنه در حالیکه نزدیکترین طبقه بعدی رو پیدا می کنه.
                امیدوارم منظورم رو خوب رسونده باشم
                با تشکر
                سلام مجدد
                پاسخی نیست؟

                کامنت

                چند لحظه..