صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 18

موضوع: کمک برای نوشتن ماکرو

  1. #1

    آخرین بازدید
    2016/09/14
    تاریخ عضویت
    August 2011
    نوشته ها
    3
    امتیاز
    0
    سپاس
    0
    سپاس شده
    0 در 0 پست
    تعیین سطح نشده است

    Lightbulb کمک برای نوشتن ماکرو

    سلام به دوستان عزیز و بزرگوارم
    امیدوارم در هرجا که هستین موفق و پیروز باشید.
    حقیقتش من از ماکرونویسی حتی یک ذره هم سر در نمیارم
    ولی درخواستی داشتم که هرکدوم از دوستان عزیز زحمت بکش و در زمانی که فرصت دارن ، برام انجامش بدن،واقعا به من منت گذاشتن.
    درخواستم این بود، فرض کنید در sheet 1 یک ستون اسم داریم و در مقابلش هم نمره ای،حالا یه ماکرو اینکارو انجام بده که در sheet 2 بیاد از هر اسم فقط یکیش رو بنویسه و در مقابلش هم جمع اعدادی روبروی همون اسم در شیت1 رو بگذاره
    در ضمن ممکنه به شیت1 اسامی جدید با نمرات جدید هم اضافه بشه که با هربار باز کردن برنامه،اسامی جدید و جمع نمرات اونها ، در شیت2 بصورت خودکار، نمایان بشن
    برای تفهیم بهتر 2تا عکس ضمیمه هست که کمک میکنه.

    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.

  2.  

  3. #2


    آخرین بازدید
    2022/06/28
    تاریخ عضویت
    May 2010
    محل سکونت
    بلژیک
    نوشته ها
    174
    امتیاز
    108
    سپاس
    0
    سپاس شده
    119 در 53 پست
    تعیین سطح نشده است

    RE: کمک برای نوشتن ماکرو

    شما برای این کار نیاز به ماکرو ندارید دوست عزیز: با فرمول های اکسل به راحتی می توانید این کار را انجام دهید!
    شما باید از تابع SUM در شیت دوم برای جمع زدن اعداد داخل شیت اول استفاده کنید.

  4. #3
    komeilex
    مهمان

    RE: کمک برای نوشتن ماکرو

    سلام به تو. راستش منم تو این کار زیاد حرفه ای نیستم ولی کاری رو که خواستی برات انجام دادم و امیدوارم راهنمایی من کمکت کنه.
    آقا به طور کلی ماکرو در حد ابتدایی چیزی جز ضبت کردن انجام یه کار و اجرای کل اون کار با یک کلید میان بر نیست!برای این کار بعد از فعال کردن تب developer از منوی اکسل آپشن گزینه ضبت ماکرو رو از گوشه پایینی سمت چپ صفحه انتخاب می کنی و بعد از وارد کردن نام ماکرو و کلید میان بر ok می کنی. از این به بعد هر کاری کنی به عنوان ماکروی مورد نظر ذخیره میشه. برای پایان ذخیره همون دکمه پایین گوشه سمت چپ رو انتخاب کن.
    واما برای سوال تو.
    بعد از وارد کردن اسامی و نمرات، محدوده اسامی رو انتخاب کن و اونهارو تو شیت 2 کپی کن. از تب data گزینه remove duplicate رو انتخاب کن تا اسامی تکراری حذف بشن. بعد با ابزار considolate از همون تب data کاری که میخوای رو انجام بده. یادت باشه تو تمام این مراحل داری کارتو با ماکرو ضبت می کنی تا بعد از اتمام نیاز نداشته باشی برای داده های جدید تمام این مراحل رو انجام بدی و کلید میانبری که تعریف کردی کل کارو برات انجام بده. موفق باشی

  5. #4


    آخرین بازدید
    2023/08/14
    تاریخ عضویت
    March 2010
    محل سکونت
    تهران
    نوشته ها
    2,034
    امتیاز
    4508
    سپاس
    2,467
    سپاس شده
    4,096 در 1,241 پست
    سطح اکسل
    85.00 %

    khakzad به Yahoo ارسال پیام

    RE: کمک برای نوشتن ماکرو

    سلام
    شما میتونید اول فیلتر کنید و در advanced filter گزینه uniqe records رو بزنید.به این ترتیب از هر مورد یکی برای شما فیلتر میشود.به این ترتیب لیست شما آماده هست.
    بعد با استفاده از فرمول sumif این کار رو انجام میدید.که range و sumrange رو از لیست اولیه و criteria رو از لیست ثانویه انتخاب میکنید
    فایل نمونه رو براتون گذاشتم
    سوالی بود در خدمتم[hr]
    در مورد سوال دوم هم همونطور که فرمودند ماکرو رو ضبط می کنید.
    هم میتونید برای هربار اجرا شدن، ماکرو رو run کنید.هم اینکه کدی هست که ماکروها را در زمان های خاص بصورت خودکار و بدون نیاز به run کردن ماکرو اجرا میکنه.
    اگر مایل بودبد کد رو میگم[hr]
    موقع ضبط ماکرو به آدرس دهی در فرمول ها دقت کنید که بعدا در صورت افزایش تعداد رکوردها مشکلی پیش نیاد
    موفق باشید
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: xlsx sumif.xlsx اطلاعات (11.1 کیلو بایت, 12 نمایش)

  6. #5


    آخرین بازدید
    2014/11/09
    تاریخ عضویت
    July 2014
    نوشته ها
    25
    امتیاز
    16
    سپاس
    3
    سپاس شده
    6 در 5 پست
    تعیین سطح نشده است

    سلام
    من ی ماکرو نوشتم در مورد اینکه دوتا ستون رو با هم مقایسه کنه ..مثلا در اینجا A رو با G مقایسه کنه و بعد اگر مثلا اولین کد خونه G در A وجود داشت در ستون کنار G درست در مقابل همون کد که مقایسش کرد بنویسه T و اگر نبود هم بنویسهF
    اما اجرا نمیشه نمیدونم چرا میشه بگین کد درسته؟اروری که میده در مورد اینه که ماکرو غیرفعاله چجوری باید فعالش کنم؟
    Sub samp()
    Dim i As Integer
    Dim j As Integer
    For i = 2 To 12952
    For j = 2 To 11498
    If Cells(7, i).Value = Cells(1, j).Value Then
    Cells(8, i).Value = "T"
    Else
    Cells(8, i).Value = "f"
    End If
    Next j
    Next i

    End Sub

  7. #6


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    798
    امتیاز
    1667
    سپاس
    591
    سپاس شده
    1,242 در 436 پست
    تعیین سطح نشده است

    ورژن افیس شما چنده؟
    فایل رو باید با پسوند xlsm ذخیره کنید که با save as امکان پذیره
    برای افیس 2007 باید تو تنظیمات ماکرو رو فعال کنی


  8. #7


    آخرین بازدید
    2014/11/09
    تاریخ عضویت
    July 2014
    نوشته ها
    25
    امتیاز
    16
    سپاس
    3
    سپاس شده
    6 در 5 پست
    تعیین سطح نشده است

    بله ممنونم فعالش کردم اما وقتی اجراش میکنم انگار تو لوپ میفته اصلا هیچ کاری نمیکنه میشه ی نگاهی به کدی که نوشتم بندازین؟جاییش اشتباهه؟
    ممنون

  9. #8


    آخرین بازدید
    2014/07/28
    تاریخ عضویت
    July 2014
    نوشته ها
    20
    امتیاز
    45
    سپاس
    0
    سپاس شده
    35 در 16 پست
    تعیین سطح نشده است

    سلام،
    اولا" که اگر براي ستون A و G مي خواهيد عمل شود سطر و ستونها را جابجا نوشته ايد، بعدش هم شايد چون حدود 11 تا 12 هزارتا خانه مد نظرتون است هنگ مي کند! ولي فکر کنم کلا" کدنويسيتون غلط باشد.
    به نظر من اصلا" دو تا متغيير نبايد تعريف کنيد (البته تا اونجا که من از توضيحاتتان درک کردم) من يک کد براي بيست رديف ستون A با يک متغيير نوشتم بينيد به درد مي خورد:
    کد:
    Sub Macro1()Dim i As Integer
    For i = 2 To 20
    If Application.WorksheetFunction.CountIf(Range("a1:a20"), Cells(i, 7).Value) > 0 Then
    Cells(i, 8).Value = "T"
    Else
    Cells(i, 8).Value = "f"
    End If
    Next i
    End Sub
    بعد شما بايد 20 را به 11498 تغيير دهيد
    البته گفتم که: اگر سوالتان را درست فهميده باشم!
    من فرض را بر اين گرفته ام که هر خانه از G2 تا G12952 را مي آيد در ستون A در محدوده A2 تا A11498 مي گردد، اگر مشابه داشت T وگرنه F را در خانه بغلي مي نويسد.
    يعني A2 تا A11498 ثابت است و ديگر احتياج به تعريف متغيير براي آن نيست.
    ویرایش توسط K1P : 2014/07/28 در ساعت 17:15

  10. سپاس ها (1)


  11. #9


    آخرین بازدید
    2020/10/03
    تاریخ عضویت
    June 2014
    محل سکونت
    در کنار یگانه دوست، در دیار اصفهان
    نوشته ها
    47
    امتیاز
    107
    سپاس
    70
    سپاس شده
    97 در 31 پست
    سطح اکسل
    61.00 %

    Juliet به Yahoo ارسال پیام
    نقل قول نوشته اصلی توسط victoria_1370 نمایش پست ها
    سلام
    من ی ماکرو نوشتم در مورد اینکه دوتا ستون رو با هم مقایسه کنه ..مثلا در اینجا A رو با G مقایسه کنه و بعد اگر مثلا اولین کد خونه G در A وجود داشت در ستون کنار G درست در مقابل همون کد که مقایسش کرد بنویسه T و اگر نبود هم بنویسهF
    اما اجرا نمیشه نمیدونم چرا میشه بگین کد درسته؟اروری که میده در مورد اینه که ماکرو غیرفعاله چجوری باید فعالش کنم؟
    Sub samp()
    Dim i As Integer
    Dim j As Integer
    For i = 2 To 12952
    For j = 2 To 11498
    If Cells(7, i).Value = Cells(1, j).Value Then
    Cells(8, i).Value = "T"
    Else
    Cells(8, i).Value = "f"
    End If
    Next j
    Next i

    End Sub
    درود دوست عزیز

    اینطور که من متوجه شدم شما در ستونی مثلاً B مقادیری دارین که میخواهین چک کنین ببینین هر کدام از سلول های این ستون برابر با یکی از سلول های ستون دیگه مثلاً A هست یا نه. اگر این رو بخواهین یه اشتباه دارین تو کدتون
    وقتی از تابع Cells استفاده میکنین، آرگومان اول شماره سطر و آرگومان دوم شماره ستون هست، درحالیکه شما شماره سطر ها رو ثابت و شماره ستون ها رو متغیر در نظر گرفتین (شمارنده حلقه)

    فایل نمونه ای گه براتون گزاشتم مقادیر 10 سطر اول ستون های A و B رو قیاس میکنه، میتونین محدوده رو به هر جا که دلتون میخواد تغییر بدین، کافیه اعداد ثابت جایگزین شن. به این صورت که محدوده سطر هاتون سقف حلقه ها میشن و شماره ستون نمایش نتیجه هم جای عدد سه میاد، 2 و 1 هم ستون هایی که با هم قیاس میشن. متغیر ها رو تغییر ندین.
    کد:
    Private Sub cmd_Click()
    
        Dim i, j As Integer
    
        For i = 1 To 10
            For j = 1 To 10
    
                If Cells(i, 2).Value = Cells(j, 1).Value Then
                    Cells(i, 3).Value = "TRUE"
                    Exit For
                Else
                    Cells(i, 3).Value = "FALSE"
                End If
    
            Next j
        Next i
    
    End Sub
    به اضافه اینکه وقتی فایل xlsm یعنی فایل اکسلی که کد VBA داره رو باز میکنین، اکسل پیغامی در یک کادر زرد رنگ بهتون میده با عنوان Security Warning اون رو با دکمه Enable Content فعال کنین، ضمناً قبل از این دکمه هم فایل رو که باز میکنین ممکنه لازم باشه دکمه Enable Editing رو هم بزنین.

    ====================

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

    امیدوارم این کد به دردتون بخوره
    موفق باشین
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط Juliet : 2014/07/28 در ساعت 19:47 دلیل:تکمیل توضیحات
    «زمانيکه با زمانه خويش نساختي و با مسندنشينان و امربران ايشان کنار نيامدي
    و آنچه را
    جاهلان ميگويند، جاهلانه باز نگفتي،
    لاجرم به تبعيد ابدي گرفتار خواهي شد!
    حتي اگر جسمت در کنج منزلي در شهري ساکن باشد؛
    و اگر بر نپذيرفتن، پاي فشردي،

    آواره ات خواهند کرد،
    به زندانت خواهند افکند
    و به دارت خواهند کشيد ...»

  12. سپاس ها (2)


  13. #10


    آخرین بازدید
    2014/07/28
    تاریخ عضویت
    July 2014
    نوشته ها
    20
    امتیاز
    45
    سپاس
    0
    سپاس شده
    35 در 16 پست
    تعیین سطح نشده است

    البته اگر مي خواهيد هر خانه با خانه متناظرش مقايسه شود (مثلا" G2 با A2 و G3 با A3 )اون موقع کدتان اينجوري مي شود:
    (البته در اين صورت تو کد اولتون حداقل بايد 12952 با 11498 برابر مي بود! براي همين آدم شک مي کند که منظورتون دقيقا" چيست!)
    کد:
    Sub Macro1()
    Dim i As Integer
    For i = 2 To 20
    If Cells(i, 7).Value = Cells(i, 7).Offset(0, -6).Value Then
    Cells(i, 8).Value = "T"
    Else
    Cells(i, 8).Value = "f"
    End If
    Next i
    End Sub

  14. سپاس ها (2)



صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

نوشتن ماکرو در اکسل

نوشتن ماکرو اکسل2010

اموزش نوشتن ماكرو در اكسل

فركول ماكرو در اكسل

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است