با استفاده از lookup یا ... ، چطوری میشه چند ورودی تو یه سلول داشته باشیم و چند نتیجه تو یه سلول دیگه بدست بیاریم؟

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • ~M*E*H*D*I~
    • 2011/10/19
    • 4377
    • 70.00

    #16
    نوشته اصلی توسط ramkal
    اوکی ، امتحان میکنم
    فقط دو تا نکته
    تو نمونه فایلی که شما فرستادید اگه مثلا یه کاراکتر وارد کنیم که تو لیست نباشه میاد آخرین داده رو تو نتیجه چاپ میکنه در صورتیکه چون معادلی براش وجود نداره باید جاشو خالی بزاره . این مشکل قابل برطرف کردن هست؟
    و اینکه اگه بخایم به جای اینکه نتایج با کاما تو سلول خروجی از هم مجزا بشن، زیر هم قرار بگیرن، میشه این کار رو کرد؟
    اگر اخرین پارامتر vlookup رو 0 بذاریم جستجوی دقیق انجام میده و اگر پارامتری وجود نداشت نتیجه خطای value# خواهد بود قابل حله موردی نداره درستش می کنم بعدا پیوست می کنم

    فعلا شب خوش
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • Ramkal

      • 2014/03/31
      • 15

      #17
      نوشته اصلی توسط ~M*E*H*D*I~
      اگر اخرین پارامتر vlookup رو 0 بذاریم جستجوی دقیق انجام میده و اگر پارامتری وجود نداشت نتیجه خطای value# خواهد بود قابل حله موردی نداره درستش می کنم بعدا پیوست می کنم

      فعلا شب خوش
      اوکی
      دستت درد نکنه ، پس تا فردا
      منتظرم
      مرسی
      :cool:

      کامنت

      • ~M*E*H*D*I~
        • 2011/10/19
        • 4377
        • 70.00

        #18
        از کدهای زیر استفاده کنید ، اعداد فقط با ; از هم جدا بشن
        کد PHP:

        Option Explicit

        Public Function lookupArray(arr As Variantmyrng As Rangemycol As Integer)
        Dim intcoun As Integer
        Dim arritem 
        As Variant
        Dim lookitem 
        As Variant
        For intcoun 1 To (Len(arr) - Len(Application.WorksheetFunction.Substitute(arr";""")) + 1)
        arritem piece(arr";"intcoun)
        On Error GoTo Errhndler
        arritem 
        Val(arritem)
        lookitem Application.WorksheetFunction.VLookup(arritemmyrngmycol0)

        Errhndler:
        If 
        Err.Number 1004 Then
        lookitem 
        ""
        lookupArray lookupArray lookitem ";"
        Else
        lookupArray lookupArray lookitem ";"
        End If
        Next intcoun
        End 
        Function

        Public Function 
        piece(Searchstring As VariantSeparator As StringIndexNum As Integer) As String
        Dim t
        Split(SearchstringSeparator)
        If 
        UBound(t) > 0 Then piece t(IndexNum 1)
        End Function 
        حتی الامکان ارور هاشو گرفتم باز با حالت های مختلف تست کنید ببینید درست عمل میکنه یا نه
        [CENTER]
        [SIGPIC][/SIGPIC]
        [/CENTER]

        کامنت

        • امين اسماعيلي
          مدير تالار ويژوال بيسيك

          • 2013/01/17
          • 1198
          • 84.00

          #19
          با درود

          اقا کار جناب وطن پرست که درسته . من حرفی ندارم . یه نمونه فایل برام فرستادی . من یه نمونه کوچیک با فرمول برات نوشتم تا 10 رقم که گفتی . خودت ایده بگیر اگه خواستی استفاده کن
          فایل های پیوست شده
          در پناه خداوندگار ایران زمین باشید و پیروز

          کامنت

          • Ramkal

            • 2014/03/31
            • 15

            #20
            نوشته اصلی توسط امين اسماعيلي
            با درود

            اقا کار جناب وطن پرست که درسته . من حرفی ندارم . یه نمونه فایل برام فرستادی . من یه نمونه کوچیک با فرمول برات نوشتم تا 10 رقم که گفتی . خودت ایده بگیر اگه خواستی استفاده کن
            ممنون، دستت درد نکنه
            البته این ورودی 2 رقمی یا 3 رقمی رو تشخیص نمیده
            بازم مرسی
            :cool:

            کامنت

            • Ramkal

              • 2014/03/31
              • 15

              #21
              نوشته اصلی توسط ~M*E*H*D*I~
              از کدهای زیر استفاده کنید ، اعداد فقط با ; از هم جدا بشن
              کد PHP:

              Option Explicit

              Public Function lookupArray(arr As Variantmyrng As Rangemycol As Integer)
              Dim intcoun As Integer
              Dim arritem 
              As Variant
              Dim lookitem 
              As Variant
              For intcoun 1 To (Len(arr) - Len(Application.WorksheetFunction.Substitute(arr";""")) + 1)
              arritem piece(arr";"intcoun)
              On Error GoTo Errhndler
              arritem 
              Val(arritem)
              lookitem Application.WorksheetFunction.VLookup(arritemmyrngmycol0)

              Errhndler:
              If 
              Err.Number 1004 Then
              lookitem 
              ""
              lookupArray lookupArray lookitem ";"
              Else
              lookupArray lookupArray lookitem ";"
              End If
              Next intcoun
              End 
              Function

              Public Function 
              piece(Searchstring As VariantSeparator As StringIndexNum As Integer) As String
              Dim t
              Split(SearchstringSeparator)
              If 
              UBound(t) > 0 Then piece t(IndexNum 1)
              End Function 
              حتی الامکان ارور هاشو گرفتم باز با حالت های مختلف تست کنید ببینید درست عمل میکنه یا نه
              خیلی ممنون
              روی فایل اصلیم تست کردم عالی عمل کرد
              فقط با عرض معذرت یه چیز دیگه هم میخواستم بهش اضافه کنم:
              در جلوی هر عددی که به عنوان ورودی انتخاب میکنیم بشه یک یا چند عدد رو درج کرد و با خط تیره از هم جدا بشن
              مثلا :

              یا


              اگه اینم درست بشه عالی میشه

              یه مثال دیگه میزنم:
              فرض کنیم تو جدول اصلیمون معادل عدد 3 مقدار کفش هست.
              طبق برنامه وقتی 3 رو وارد میکنیم معادلشو که کفش هست چاپ میکنه، این درست تا اینجا
              حالا اگه بخوایم تو خروجی به جای کفش داشته باشیم : کفش002-001-005
              قاعداً باید اینجوری تایپ کنیم: 3-002-001-005
              یعنی بیاد معادل عدد 3 رو از جدول اصلی که همون کفش هست بکشه بیرون و اون سه عدد 002-001-005 رو هم بچسبونه به آخر کفش
              در واقع ما جایی جدولی برای اون عددهای 002-001-005...... نداریم.
              Last edited by Ramkal; 2014/04/01, 23:08. دلیل: افزودن یک مثال
              :cool:

              کامنت

              • امين اسماعيلي
                مدير تالار ويژوال بيسيك

                • 2013/01/17
                • 1198
                • 84.00

                #22
                با درود
                اره خوب به من گفتی 10 تا . اونم مشکلی نیست ولی خوب باید اعداد با یه چیز مشخص مثل اسپیس یا کاما از هم جدا بشن وگرنه که نمیشه. اینو به من نگفتی
                در پناه خداوندگار ایران زمین باشید و پیروز

                کامنت

                • ~M*E*H*D*I~
                  • 2011/10/19
                  • 4377
                  • 70.00

                  #23
                  مورد رو بررسی کردم

                  بهتره اون فایلی که گفتم تهیه کنید و از این شیوه استفاده نکنید

                  چون محدودیت های زیادی به تابع اضافه میشه که با کوچکترین تغییر منجر به بروز خطا میشه
                  [CENTER]
                  [SIGPIC][/SIGPIC]
                  [/CENTER]

                  کامنت

                  • امين اسماعيلي
                    مدير تالار ويژوال بيسيك

                    • 2013/01/17
                    • 1198
                    • 84.00

                    #24
                    نوشته اصلی توسط Ramkal
                    ممنون، دستت درد نکنه
                    البته این ورودی 2 رقمی یا 3 رقمی رو تشخیص نمیده
                    بازم مرسی
                    با درود
                    فایل زیر رو یه نگاه بنداز. از ترکیب توابع درست شده . تا 10 تا ترکیب عددی . یعنی همون عدد که با اسپیس جداشون کرده باشیم درست شده
                    فایل های پیوست شده
                    در پناه خداوندگار ایران زمین باشید و پیروز

                    کامنت

                    • امين اسماعيلي
                      مدير تالار ويژوال بيسيك

                      • 2013/01/17
                      • 1198
                      • 84.00

                      #25
                      با درود
                      نمیدونم دوستمون به جواب رسیدن یا نه. اما خوب یکی از دوستای گلم بهم گفت که فرمول خیلی طولانی شده و دیدیم راست میگه . همونو تو فرمول تو حلقه نوشتمش با یه سری کارای دیگه واسه دوستمون. فقط باید یادش باشه که عدد ها رو با یدونه اسپیس از هم جدا کنه. هر چند تا عدد هم باشه مهم نیست اینبار . پویا کردنشم مثلا اگر بیش ازa10 میزارم بر عهده خودش . البته کاری نداره نمونه های زیاد تو سایت هست. فقط کافی عدد رو بنویسی و run کنه.

                      بازم از اینکه فرمول طولانی بود و غیره معذرت میخوام
                      فایل های پیوست شده
                      در پناه خداوندگار ایران زمین باشید و پیروز

                      کامنت

                      • Ramkal

                        • 2014/03/31
                        • 15

                        #26
                        نوشته اصلی توسط امين اسماعيلي
                        با درود
                        نمیدونم دوستمون به جواب رسیدن یا نه. اما خوب یکی از دوستای گلم بهم گفت که فرمول خیلی طولانی شده و دیدیم راست میگه . همونو تو فرمول تو حلقه نوشتمش با یه سری کارای دیگه واسه دوستمون. فقط باید یادش باشه که عدد ها رو با یدونه اسپیس از هم جدا کنه. هر چند تا عدد هم باشه مهم نیست اینبار . پویا کردنشم مثلا اگر بیش ازa10 میزارم بر عهده خودش . البته کاری نداره نمونه های زیاد تو سایت هست. فقط کافی عدد رو بنویسی و run کنه.

                        بازم از اینکه فرمول طولانی بود و غیره معذرت میخوام
                        سلام
                        ممنون از زحماتتون
                        راستش با توجه به نیازم چون باید یه مقدار تغییرش بدم و آشنایی زیادی با کدها ندارم این روشتون برای من یه مقدار سخته!
                        ضمن اینکه توضیحات پست 22 هم میخواستم اعمال بشه
                        به هر صورت مرسی
                        :cool:

                        کامنت

                        • Ramkal

                          • 2014/03/31
                          • 15

                          #27
                          نوشته اصلی توسط ~M*E*H*D*I~
                          مورد رو بررسی کردم

                          بهتره اون فایلی که گفتم تهیه کنید و از این شیوه استفاده نکنید

                          چون محدودیت های زیادی به تابع اضافه میشه که با کوچکترین تغییر منجر به بروز خطا میشه
                          سلام
                          ببخشید من یه هفته ای سر کار بودم و به نت دسترسی نداشتم! :22:
                          اون جدول عددهای سه رقمی رو تو یه شیت جدا قرار دادم:


                          حالا عملی کردن ِ توضیحاتی که تو پست شماره 22 دادم امکان پذیره؟

                          مثلا وقتی میزنیم:
                          2-004
                          نتیجه بده:
                          آهن-004
                          (معادل 2 رو از شیت table بخونه و معادل 004 رو از شیت number بخونه)

                          یا مثلا وقتی میزنیم:
                          2-584; 9-657-001
                          نتیجه بده:
                          آهن-584; قفل-657-001
                          (آهن و قفل رو از شیت table بخونه و عددهای 584 و 657 و 001 رو از شیت number بخونه)

                          مرسی :53:
                          :cool:

                          کامنت

                          • ~M*E*H*D*I~
                            • 2011/10/19
                            • 4377
                            • 70.00

                            #28
                            کد زیر رو امتحان کنید مشکل حل میشه
                            کد PHP:

                            Option Explicit


                            Public Function lookupArray(arr As Variantmyrng As Rangemycol As Integer)
                            Dim code1code2
                            Dim intcoun 
                            As Integer
                            Dim arritem 
                            As Variant
                            Dim lookitem 
                            As Variant
                            For intcoun 1 To (Len(arr) - Len(Application.WorksheetFunction.Substitute(arr";""")) + 1)
                            arritem piece(arr";"intcoun)
                            On Error GoTo Errhndler
                            If InStr(1arritem"-"vbTextCompare) <> 0 Then
                            code1 
                            Mid(arritem1Application.WorksheetFunction.Find("-"arritem1) - 1)
                            code2 Right(arritemLen(arritem) - Len(code1))
                            Else
                            code1 arritem
                            code2 
                            ""
                            End If
                            arritem Val(code1)

                            lookitem Application.WorksheetFunction.VLookup(arritemmyrngmycol0)
                            lookitem lookitem code2
                            Errhndler
                            :
                            If 
                            Err.Number 1004 Then
                            lookitem 
                            ""
                            lookupArray lookupArray lookitem ";"
                            Else
                            lookupArray lookupArray lookitem ";"
                            End If
                            Next intcoun
                            End 
                            Function

                            Public Function 
                            piece(Searchstring As VariantSeparator As StringIndexNum As Integer) As String
                            Dim t
                            Split(SearchstringSeparator)
                            If 
                            UBound(t) > 0 Then piece t(IndexNum 1)
                            End Function 
                            [CENTER]
                            [SIGPIC][/SIGPIC]
                            [/CENTER]

                            کامنت

                            • Ramkal

                              • 2014/03/31
                              • 15

                              #29
                              ورودی رو چطوری بنویسم؟
                              :cool:

                              کامنت

                              • ~M*E*H*D*I~
                                • 2011/10/19
                                • 4377
                                • 70.00

                                #30
                                نوشته اصلی توسط Ramkal
                                ورودی رو چطوری بنویسم؟
                                مثل قبل

                                آیتم اول فاکتور جستجو فاکتور دوم محدوده و فاکتور سوم ستون جستجو مثل vlookup
                                [CENTER]
                                [SIGPIC][/SIGPIC]
                                [/CENTER]

                                کامنت

                                چند لحظه..