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

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

    • 2014/01/12
    • 798

    [حل شده] جمع غیر تکراری با شرط

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

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

    ممنونم

    اگه کد vba باشه بهتره
    فایل های پیوست شده
    [CENTER]
    [/CENTER]
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    نوشته اصلی توسط 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

    کامنت

    • كامران

      • 2016/06/29
      • 147
      • 41.00

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

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

      ممنونم

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

      کامنت

      • ali.b

        • 2014/01/12
        • 798

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

        کامنت

        • Amir Ghasemiyan

          • 2013/09/20
          • 4598
          • 100.00

          #5
          نوشته اصلی توسط 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

          کامنت

          چند لحظه..