نمایش نتایج: از شماره 1 تا 5 , از مجموع 5

موضوع: جمع غیر تکراری با شرط

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1


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

    جمع غیر تکراری با شرط

    سلام
    طبق فایل نمونه من 2 ستون داده دارم که در یک ستون شماره نامه و در ستون بعدی مبلغ مربوط به اون شماره نامه

    و این شماره ها تکرار می شن و هر شماره مبلغ خودشو داره طبق فایل نمونه
    مشکلم اینه میخوام غیر تکرار جمع شه یعنی اگه از یک شماره نامه چندین بار ثبت کنم باز فقط عدد همون نامه جمع بشه و همه رو جمع نکنه

    ممنونم

    اگه کد vba باشه بهتره
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: xlsx uni.xlsx اطلاعات (8.1 کیلو بایت, 9 نمایش)
    پاسخ مورد نظر براي اين تاپيك ارسال شده است.


  2. #2


    آخرین بازدید
    یک روز پیش
    تاریخ عضویت
    September 2013
    محل سکونت
    بچه محل آقا امام رضا
    نوشته ها
    4,469
    امتیاز
    12312
    سپاس
    8,924
    سپاس شده
    10,583 در 3,742 پست
    سطح اکسل
    100.00 %

    نقل قول نوشته اصلی توسط ali.b نمایش پست ها
    سلام
    طبق فایل نمونه من 2 ستون داده دارم که در یک ستون شماره نامه و در ستون بعدی مبلغ مربوط به اون شماره نامه

    و این شماره ها تکرار می شن و هر شماره مبلغ خودشو داره طبق فایل نمونه
    مشکلم اینه میخوام غیر تکرار جمع شه یعنی اگه از یک شماره نامه چندین بار ثبت کنم باز فقط عدد همون نامه جمع بشه و همه رو جمع نکنه

    ممنونم

    اگه کد vba باشه بهتره

    سلام دوست عزيز
    با استفاده از اين تابع ميتونين خروجي مد نظرتون رو دريافت كنيد

    کد:
    Function SumUnique(TestRange As Range, SumRange As Range)
    Dim uniq As Variant: ReDim uniq(0)
    Dim i As Long, s As Double
    s = 0
    If TestRange.Rows.Count <> SumRange.Rows.Count Then SumUnique = CVErr(2025): Exit Function
    For i = 1 To TestRange.Rows.Count
        If Not IsInArray(TestRange.Cells(i).Value, uniq) Then
            ReDim Preserve uniq(UBound(uniq) + 1)
            uniq(UBound(uniq)) = TestRange.Cells(i).Value
            s = s + SumRange.Cells(i)
        End If
    Next i
    SumUnique = s
    End Function
    
    
    Private Function IsInArray(val, arr)
    IsInArray = False
    For i = LBound(arr) To UBound(arr)
        If arr(i) = val Then IsInArray = True: Exit Function
    Next i
    End Function

  3. سپاس ها (1)


  4. #3


    آخرین بازدید
    2019/12/17
    تاریخ عضویت
    June 2016
    نوشته ها
    147
    امتیاز
    120
    سپاس
    41
    سپاس شده
    100 در 53 پست
    سطح اکسل
    41.00 %

    نقل قول نوشته اصلی توسط ali.b نمایش پست ها
    سلام
    طبق فایل نمونه من 2 ستون داده دارم که در یک ستون شماره نامه و در ستون بعدی مبلغ مربوط به اون شماره نامه

    و این شماره ها تکرار می شن و هر شماره مبلغ خودشو داره طبق فایل نمونه
    مشکلم اینه میخوام غیر تکرار جمع شه یعنی اگه از یک شماره نامه چندین بار ثبت کنم باز فقط عدد همون نامه جمع بشه و همه رو جمع نکنه

    ممنونم

    اگه کد vba باشه بهتره
    اینم یه روش دیگه
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: rar uni.rar اطلاعات (15.2 کیلو بایت, 13 نمایش)

  5. سپاس ها (2)


  6. #4


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

    سلام
    برای رنج های فیلتر شده چه تغییراتی باید اعمل کنم؟ که فقط سلول های visible رو محاسبه کنه
    ممنونم


  7. #5


    آخرین بازدید
    یک روز پیش
    تاریخ عضویت
    September 2013
    محل سکونت
    بچه محل آقا امام رضا
    نوشته ها
    4,469
    امتیاز
    12312
    سپاس
    8,924
    سپاس شده
    10,583 در 3,742 پست
    سطح اکسل
    100.00 %

    نقل قول نوشته اصلی توسط ali.b نمایش پست ها
    سلام
    برای رنج های فیلتر شده چه تغییراتی باید اعمل کنم؟ که فقط سلول های visible رو محاسبه کنه
    ممنونم

    سلام دوست عزيز

    براي اينكار كافيه فقط اين خط كد رو اصلاح كنيد:
    کد:
    If Not IsInArray(TestRange.Cells(i).Value, uniq) Then
    و بجاي اون اين كد رو بذاريد:
    کد:
    If Not IsInArray(TestRange.Cells(i).Value, uniq) And TestRange.Rows(i).EntireRow.Hidden = False Then

  8. سپاس ها (2)



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

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

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

موضوعات مشابه

  1. نرم افزار حضور غیاب با اکسل
    توسط Amir Ghasemiyan در انجمن برنامه های کاربردی اکسل
    پاسخ ها: 2
    آخرين نوشته: 2020/03/14, 17:28
  2. [حل شده] رسم نمودار یک غیر تابع در اکسل
    توسط Excel learner در انجمن سوالات اكسل - Excel Questions
    پاسخ ها: 1
    آخرين نوشته: 2016/07/29, 20:53
  3. فرمول الارم بخاطر عدد غیر مجاز
    توسط alikaraj66 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 3
    آخرين نوشته: 2015/06/23, 12:09
  4. غیر فعال کردن × بالای فرمها
    توسط javadsar در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 1
    آخرين نوشته: 2013/12/04, 20:03

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

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

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

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

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