نوشتن یک ماکرو مقایسه ای ساده

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

    • 2014/02/28
    • 88

    [حل شده] نوشتن یک ماکرو مقایسه ای ساده

    سلام به همه دوستان

    دوستان من در فایل اکسل زیر چطوری میتوانم ماکرو بنویسم که سلولهای در ردیف a را که ماهیت تاریخ دارند با سلولهای ردیف f مقایسه کند و اگر برابر بود هرمقدار که روبروی سلول ردیف f که همان g است را کپی در ردیف مقابل تاریخ a که همان c است بکند؟و اگر تاریخی بود در ردیف سطر های a که در سطر های f وجود ندارد در مقابل ان در سطر c مثلا سلول را با رنگ قرمز پر کند.

    در واقع هدف این اکسل این است که روبروی تاریخ های مقایسه شده محتوای g را که هر مقدار چه رشته ای چه اعداد قرار دهد


    دوستن من برای حل این ماکرو یک کارت هدیه ایرانسل 2 هزارتومانی تقدیم میکنم

    ممنون از دوستان لطفا راهنمایی فرمایید
    فایل های پیوست شده
  • mokaram
    مدير تالار اکسل و بانک اطلاعاتی

    • 2011/02/06
    • 1805
    • 74.00

    #2
    فرمول زیر را تو سلول1 c بنویسید
    کد PHP:
    =if(countif(f:f;a1)=0;g1;""
    [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
    [/CENTER]

    کامنت

    • ed2008

      • 2014/02/28
      • 88

      #3
      نوشته اصلی توسط mokaram
      فرمول زیر را تو سلول1 c بنویسید
      کد PHP:
      =if(countif(f:f;a1)=0;g1;""
      سلام جناب mokaram

      من فرمایش شما را انجام دادم اما با خطا مواجه میشوم که عکس را ضمیمه میکنم چون هدف ما ماکرو هست فکر کنم باید با حلقه for باید ماکرو نوشته شود مثلا یک حلقه برای A و یک حلقه برای F , و برای مقایسه باید از دستور شما برای if استفاده کرد متاسفانه من با دستورات vb ماکرو اشنا نیستم

      خواهشا برای شما مقدور هست ماکر بنویسید که با یک دکمه همه کار را انجام دهد


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

      کامنت

      • mokaram
        مدير تالار اکسل و بانک اطلاعاتی

        • 2011/02/06
        • 1805
        • 74.00

        #4
        دوست عزیز احتمال میدم تو فرمول ذکر شده شما باید از جدا کننده , به جای ; استفاده کنید . یعنی فرمول را به شکل زیر بنویسید :
        کد PHP:
        =if(countif(f:f,a1)=0,g1,""
        [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
        [/CENTER]

        کامنت

        • ed2008

          • 2014/02/28
          • 88

          #5
          نوشته اصلی توسط mokaram
          دوست عزیز احتمال میدم تو فرمول ذکر شده شما باید از جدا کننده , به جای ; استفاده کنید . یعنی فرمول را به شکل زیر بنویسید :
          کد PHP:
          =if(countif(f:f,a1)=0,g1,""

          ممنون جناب mokaram


          الان دیگه خطا نداره ولی فرمول درست نیست تو عکس مثلا ما 27 نداریم 20 میزاره یا اینکه شروع میکنه G2 را گذاشتن تو سلول c2 که اصلا ربطی نداره یا C1 که داریم پر نمیکنه فرمول صحیح نیست
          باز هم ممنون از پاسخ های شما
          فایل های پیوست شده

          کامنت

          • mokaram
            مدير تالار اکسل و بانک اطلاعاتی

            • 2011/02/06
            • 1805
            • 74.00

            #6
            عذر میخوام من سوال شما را برعکس متوجه شدم. فایل زیر را ملاحظه کنید
            فایل های پیوست شده
            [CENTER][IMG]http://forum.exceliran.com/signaturepics/sigpic909_10.gif[/IMG]
            [/CENTER]

            کامنت

            • ed2008

              • 2014/02/28
              • 88

              #7
              [QUOTE=mokaram;64157]عذر میخوام من سوال شما را برعکس متوجه شدم. فایل زیر را ملاحظه کنید
              خواهش میکنم اختیار دارید
              شاید مشکل این باشد که من باید بیشتر توضیح دهم باز فرمول شما اشتباه است

              در واقع قصد ما ازمقایسه دو تاریخ این است که محتوا روبرو تاریخ دوم! هر انچه که روبرو تاریخ دوم هست بدون تغییر به خانه سلول C مد نظر منتقل بشود فرمول شما به این دلیل اشتباه است که از خانه G1 به ترتیب از بالا به پایین شروع میکند سلولها را کپی در C1 تا اخر میکند و این اشتباه است چون ما برای اینکه این اشتباه رخ ندهد از مقایسه تاریخ ها با هم برای صحت کپی استفاده میکنیم .ما که قصد نداریم سلولهای G را تماما به C کپی کنیم این کار را میتوانستیم با copye /past انجام دهیم پس فرمول شما در G مشکل دارد

              من عکس را ضمیمه میکنم
              امیدوارم تونسته باشم مسئله و اشکال کار را توضیح دهم هرچند که من فکر کنم این ماکرو باید با حلقه for نوشته شود
              فایل های پیوست شده

              کامنت

              • حسام بحرانی

                • 2013/09/29
                • 2065
                • 72.00

                #8
                [QUOTE=ed2008;64158]
                نوشته اصلی توسط mokaram
                عذر میخوام من سوال شما را برعکس متوجه شدم. فایل زیر را ملاحظه کنید
                خواهش میکنم اختیار دارید
                شاید مشکل این باشد که من باید بیشتر توضیح دهم باز فرمول شما اشتباه است

                در واقع قصد ما ازمقایسه دو تاریخ این است که محتوا روبرو تاریخ دوم! هر انچه که روبرو تاریخ دوم هست بدون تغییر به خانه سلول C مد نظر منتقل بشود فرمول شما به این دلیل اشتباه است که از خانه G1 به ترتیب از بالا به پایین شروع میکند سلولها را کپی در C1 تا اخر میکند و این اشتباه است چون ما برای اینکه این اشتباه رخ ندهد از مقایسه تاریخ ها با هم برای صحت کپی استفاده میکنیم .ما که قصد نداریم سلولهای G را تماما به C کپی کنیم این کار را میتوانستیم با copye /past انجام دهیم پس فرمول شما در G مشکل دارد

                من عکس را ضمیمه میکنم
                امیدوارم تونسته باشم مسئله و اشکال کار را توضیح دهم هرچند که من فکر کنم این ماکرو باید با حلقه for نوشته شود
                سلام
                از ترکیب توابع INDEX و MATCH استفاده کنید :
                کد PHP:
                =IFERROR(INDEX(G:G,MATCH(A:A,F:F,0),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]

                کامنت

                چند لحظه..