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

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

    • 2015/05/12
    • 11

    [حل شده] جستجوی یک ستون و انتقال سلولهایی که متن آنها با کلمه خاصی شروع می شود به ستون دیگر

    ویرایش : در پست 12 همین تاپیک سوال خودمو با شرح دقیق تر و نمونه فایل بهتر مطرح کردم لطفا اونجا رو ملاحظه بفرمایین

    ----------------------------------------------------------------------
    سلام
    سوال اصلی بنده کمی پیچیدست ولی خوشبختانه با دستورات و توابع خود اکسل تا یه جاییشو حل کردم
    الان :
    یه ستون دارم که مقادیر سلولش اینجوره
    ستون A :
    شرکت کاویان
    مدل توکار 4 شعله
    نوع ایستاده
    جنس فلزی
    جنس چوبی
    نوع تک نفره
    مارک سامسونگ
    نوع کنفرانس
    مارک الجی
    مدل f5550
    ظرفیت 17 نفره
    ...
    ...

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

    اگه سخته لطفا ماکرویی ارایه بدین که فقط عبارتهایی رو که اولشون کلمه فلان اومده رو به ستون بعدی ببره ( در اینصورت با تکرار ماکرو برای عبارتهای دیگه بازم به هدم میرسم)
    اگه اون عبارت مورد جستجو و شماره ستون جدید رو با اینپوت باکس از کاربر دریافت کنیم خیلی عالی تر میشه

    با سرچ تونستم اینا رو پیدا کنم ولی نتونستم به شکل مورد نظر خوردم درشون بیارم
    Move cell contents IF numeric...
    Search and Move Text
    macro to move a cell

    نمونه فایل رو در پست 6 قرار دادم
    Last edited by hasanr; 2015/05/17, 23:50.
  • generalsamad
    مدير تالار توابع

    • 2014/06/22
    • 1496

    #2
    با سلام
    شما با استفاده از توابع متنی به جوابتون برسید
    مثلا برای سلولهائی که اول کلمشون شرکت هست این فرمول رو میتونید استفاده کنید
    کد PHP:
    =if(left(a1;4)="شرکت";a1;""
    فایل ضمیمه گردید
    فایل های پیوست شده
    [CENTER]
    [SIGPIC][/SIGPIC]
    [/CENTER]

    کامنت

    • hasanr

      • 2015/05/12
      • 11

      #3
      ممنون از بابت جوابتون . خیلی عالی بود
      البته در اصل من چندین ستون دارم که شرایط گفته شده رو دارن امیدورام با این روش بشه درستشون کرد
      اگه ممکنه همین کار رو با استفاده از دستور search و move بیان کنید ینی جوری باشه که بجای کپی پیست کردن این دستوررات ، بتونم یک ستون رو انتخاب کنم و همه عبارتهایی که با شرکت شرو میشن رو به ستون مثلا 10 انتقال بده که بعدش بتونم با عوض کردن دستور ، عبارتهایی رو که با جنس شرو میشن رو به ستون 11 انقال بدم و همینطور تا بعد . مخصوصا گه بشه این دستور در قالب یک ماکرو باشه که با پیمایش ستون از سلول اول تا اخر ، این کار رو انجام بده خیلی خیلی ممنون تر میشم
      دستورات پیمایش ستون ، تو لینکهایی که دادم موجوده ولی کار نهایی از عهده من خارجه و کمک دوستان رو نیاز دارم
      Last edited by hasanr; 2015/05/12, 17:05.

      کامنت

      • nikkhah

        • 2014/08/29
        • 124

        #4
        با سلام
        دوست عزیز اگر امکان دارد نمونه فایل قرار بدین تا به نتیجه مطلوبی برسید .
        [CENTER][FONT=book antiqua][COLOR=#0000FF][SIZE=4]اشکهایی که پس از هر شکست میریزیم ، همان عرقیست که برای [/SIZE][/COLOR][COLOR=#b22222][SIZE=4]پیروزی [/SIZE][/COLOR][COLOR=#0000FF][SIZE=4]نریخته ایم[/SIZE][/COLOR]
        [/FONT][/CENTER]

        کامنت

        • khakzad

          • 2010/03/17
          • 2034
          • 85.00

          #5
          دوت عزیز
          اگر این فرمولی که نوشتن رو شما در ستون های مختلف یعنی شرکت ها رو در ستون دهم و همینطور تا اخر بنویسید نیازی به کپی نیست و از طرفی همیشه هست حتی نیازی به اجرای کد در هر بار نیست.

          موفق باشید
          [CENTER][B][COLOR=#008000][SIZE=3]محصولات و جزوات آموزش تخصصی [URL="https://excelpedia.net/"]اکسل[/URL] در:

          [URL="https://excelpedia.net/category/excel-functions/"]برترین مرجع تخصصی پارسی اکسل[/URL]
          [URL="http://www.exceliran.com/shop/"]جامعه اكسل ايرانيان: فروشگاه[/URL][/SIZE][/COLOR][/B]
          :wcom:

          [B][URL="https://excelpedia.net/"]آموزش اکسل تخصصی[/URL] و [URL="https://excelpedia.net/excel-ninja/"]پیشرفته[/URL] - [URL="https://excelpedia.net/"]تهران[/URL][/B]
          [EMAIL="h.khakzad@yahoo.com"]h.khakzad@yahoo.com[/EMAIL]
          [/CENTER]

          کامنت

          • hasanr

            • 2015/05/12
            • 11

            #6
            ممنون از راهنماییتون ولی مشکل من اینه که در فایل اصلی اطلاعات در ستونهای مختلف هستند
            یه نمونه درست کردم که منظورمو بهتر برسونه
            فایل های پیوست شده
            Last edited by hasanr; 2015/05/14, 11:26.

            کامنت

            • iranweld

              • 2015/03/29
              • 3341

              #7
              با سلام
              با توجه به بهم ریخته بودن داده های مشابه در ستون های مختلف ظاهرا بایستی زحمت بکشید طبق فرمتی که برای شما آماده کردم همه را مجددا تایپ نمایید
              فایل های پیوست شده

              کامنت

              • hasanr

                • 2015/05/12
                • 11

                #8
                متوجه منظورتون نمیشم !!
                مشکل همینه که نمیشه چندین هزار رکورد رو دستی درست کرد
                در حال حاضر هدف اینه که شیت یک به صورت شیت دو دربیاد بعدش همه عبارتهای نام و نام خانوادگی و سن و ... رو حذف می کنم و سر ستون میزارم براشون
                به هر حال مرسی از زحماتتون

                کامنت

                • generalsamad
                  مدير تالار توابع

                  • 2014/06/22
                  • 1496

                  #9
                  برای حذف قسمتی از متن مشکلی نداره
                  شاید با ترکیب توابع جستجو و متنی بشه حلش کرد
                  اگه فرمولش رو نوشتم قرار میدم
                  [CENTER]
                  [SIGPIC][/SIGPIC]
                  [/CENTER]

                  کامنت

                  • hasanr

                    • 2015/05/12
                    • 11

                    #10
                    لطفا اساتید محترم سایت بزرگواری کنن و یه نگاهی به نمونه ای که ارسال کردم بندازن
                    توی اولین شیت داده های فعلی هست و توی شیت دوم وضعیت مورد نظر
                    ممنونم

                    کامنت

                    • generalsamad
                      مدير تالار توابع

                      • 2014/06/22
                      • 1496

                      #11
                      با سلام
                      من یه راه حل میدم شاید کارتون رو راه انداخت
                      فقط واسه ستون نام باید یه کارائی کنی که ستون نامتون هم درست شه
                      مثلا بیاید از Replace استفاده کنید و تمام نام خانوادگی ها رو تغییر بدید به به حرف Z بعد دوباره از Replace استفاده کنید و حرف X رو جایگزین نام کنید
                      دوباره Replace و Z رو نام خانوادگی میکنیم و در آخر دوباره Replace و Xها رو تغییر میدیم به نام و یک فضای خالی
                      هدف این کار این بوده که بین نام و نام خانوادگی تمایز ایجاد شه که فرمول زیر رو وقتی به کار بردیم مشکلی بوجود نیاد

                      بعد از این کار کل ستونها رو به ترتیب پشت سر هم قرار میدیم (حتی سلولهای خالی باید کپی یا جابجا شوند که نظم قبلیشون بهم نخوره)
                      بعد از این فرمول میتونیم استفاده کنیم بفرض داده ها توی ستون A هستند
                      کد PHP:
                      =IF(LEFT(A17;5)="نام  ";MID(A17;6;LEN(A17)-5);IF(LEFT(A17;12)="نام خانوادگی";MID(A17;14;LEN(A17)-13);IF(LEFT(A17;4)="مدرک";MID(A17;6;LEN(A17)-5);IF(LEFT(A17;2)="سن";MID(A17;4;LEN(A17)-3);IF(LEFT(A17;8)="محل تولد";MID(A17;10;LEN(A17)-9);IF(LEFT(A17;2)="کد";MID(A17;4;LEN(A17)-3);IF(LEFT(A17;7)="مسئولیت";MID(A17;9;LEN(A17)-8);IF(LEFT(A17;4)="تاهل";MID(A17;6;LEN(A17)-5);IF(LEFT(A17;4)="مسکن";MID(A17;6;LEN(A17)-5);IF(LEFT(A17;15)=" شماره شناسنام ه";MID(A17;17;LEN(A17)-16);IF(LEFT(A17;5)="جنسیت";MID(A17;7;LEN(A17)-6);""))))))))))) 
                      بعد باید کل ستون رو تبدیل به Value کرده که موقع جابجائی با خطا روبرو نشیم
                      Copy=>Paste Special=>Value

                      کار آخر اینه که به تعداد سطر جدول باید از بالا به پائین عمل جابجائی رو انجام بدیم که توی این سوال ما 12تا 12تا از ستون دوم Cut به به ستونهای مورد نظر انتقال میدهیم
                      2 عمل آخر رو روی فایل اعمال نکردم که فرمول رو ببینید
                      فایل ضمیمه گردید
                      فایل های پیوست شده
                      Last edited by generalsamad; 2015/05/14, 02:32.
                      [CENTER]
                      [SIGPIC][/SIGPIC]
                      [/CENTER]

                      کامنت

                      • hasanr

                        • 2015/05/12
                        • 11

                        #12
                        جستجوی یک یا چند ستون و انتقال سلولهایی که متن آنها با کلمه خاصی شروع می شود، به ستون دیگر

                        سلام
                        قبلا سوالی در پست اول این تاپیک مطرح کرده بودم
                        به نظرم سوال رو دقیق مطرح نکرده بودم و نمونه فایلی هم که در پستهای بعدیش گذاشتم اونقدری ساده نبود که دقیقا منظورمو برسونه ، البته پاسخهای اساتید و دوستان محترم سایت کاملا مفید و کاربردی بود ولی مشکل منو کاملا رفع نکرد.
                        بنابراین با اجازه همه دوباره مشکلو مطرح می کنم:

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

                        نام علی احمدی کد 2545 مدرک دیپلم سن 36
                        نام محسن اصفهانی مسئولیت تایپیست سن 25 محل تولد تهران کد 88978
                        نام رضا اصغری مسئولیت مدیر داخلی کد 5244
                        نام احمد رحمانی محل تولد شیراز سن 28
                        نام کامران اکبری کد 878 مدرک زیر دیپلم مسئولیت آبدارخانه
                        قراره اطلاعات به صورت زیر درست بشن

                        نام علی احمدی مدرک دیپلم سن 36 کد 2545
                        نام محسن اصفهانی سن 25 مسئولیت تایپیست محل تولد تهران کد 88978
                        نام رضا اصغری مسئولیت مدیر داخلی کد 5244
                        نام احمد رحمانی سن 28 محل تولد شیراز
                        نام کامران اکبری مدرک زیر دیپلم مسئولیت آبدارخانه کد 878
                        پیشنهاد خودم اینه که ستون b رو پیمایش کنیم و هر جا شرط ما برقرار بود محتوای سلول رو به سلول مشابه در ستون یازدهم انتقال بدیم یا ده ستون شیفت بدیم به جلو ( شیفت دادن در اکسل رو بلد نیستم)
                        بعد همین کار رو برای ستونهای دیگه ینی ستون 3 تا 10 انجام بدیم. تا اینجا همه مدرکها به ستون یازدهم منتقل شده
                        در مرحله بعدی با تغییر ماکرو دنبال عبارت "سن " تو ستونها می گردیم و سلولهای حاوی سن رو به ستون دوازدهم منتقل می کنیم و ...

                        کد:
                        Dim i As Long
                        Dim LR As Long
                        LR = 6000
                        For i = 1 To LR
                         if(left(b1;4)="مدرک";b1;"") Then
                          Range("k" & i) = Range("b" & i)
                          Range("b" & i).Clear
                         End If
                        Next i
                        فایل های پیوست شده
                        Last edited by hasanr; 2015/05/17, 13:30.

                        کامنت

                        • generalsamad
                          مدير تالار توابع

                          • 2014/06/22
                          • 1496

                          #13
                          با سلام
                          لطفا یه فایل نمونه قرار بدید تا روی اون فایل فرمولها قرار داده بشه
                          [CENTER]
                          [SIGPIC][/SIGPIC]
                          [/CENTER]

                          کامنت

                          • حسام بحرانی

                            • 2013/09/29
                            • 2065
                            • 72.00

                            #14
                            نوشته اصلی توسط hasanr
                            سلام
                            قبلا سوالی در تاپیک جستجوی یک ستون و انتقال سلولهایی که متن آنها با کلمه خاصی شروع می شود به ستون دیگر مطرح کرده بودم
                            به نظرم سوال رو دقیق مطرح نکرده بودم و نمونه فایلی هم که در پستهای بعدیش گذاشتم اونقدری ساده نبود که دقیقا منظورمو برسونه ، البته پاسخهای اساتید و دوستان محترم سایت کاملا مفید و کاربردی بود ولی مشکل منو کاملا رفع نکرد.
                            بنابراین با اجازه همه دوباره مشکلو مطرح می کنم:
                            ......
                            کد:
                            Dim i As Long
                            Dim LR As Long
                            LR = 6000
                            For i = 1 To LR
                             if(left(b1;4)="مدرک";b1;"") Then
                              Range("k" & i) = Range("b" & i)
                              Range("b" & i).Clear
                             End If
                            Next i
                            سلام،
                            دوست عزیز به انجمنِ خودتان خوش آمدید.

                            لطفاً موضوع را در همان تاپیک ادامه دهید و از ایجاد تاپیک تکراری خودداری کنید (
                            اینکار انجام شد )

                            با این روش علاوه بر اینکه پاسخهای دوستان را یکجا میتوانید داشته باشید، قطعاً سریعتر نیز به جواب خواهید رسید.

                            موفق باشید.
                            [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]

                            کامنت

                            • mohammad_ashooryan

                              • 2014/08/13
                              • 480
                              • 80.00

                              #15
                              با سلام
                              با استفاده از توابع left و indirect و address , row و column و if , min و index به صورت آرايه اي جواب سوالتون رو پيوست كردم.
                              فرمولها قابليت كپي به سلولهاي پايينتر را نيز دارند. (من تا سطر 20 كپي كردم.)
                              سوالي بود در خدمتم.
                              نمونه مشخصات.xlsx

                              کامنت

                              چند لحظه..