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

موضوع: (آموزشی) شمارش تعداد کلمات در شیت های مختلف

  1. #1


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    (آموزشی) شمارش تعداد کلمات در شیت های مختلف

    سلام دوستان
    ی سوالی برام پیش اومد که ایا راهی هست بشه مشخص کرد در چندین شیت و رنج خاص چند بار کلمه مورد نظر تکرار شده؟
    خوب با کد زیر مینویند بدون دردسر مشکلتون رو حل کنید
    اول ی ماژول تحت VB ایجاد کنید و فانکشن زیر رو قرار بدید
    کد:
    Function myCountIf(rng As Range, criteria) As Long    Dim ws As Worksheet
    
    
        For Each ws In ThisWorkbook.Worksheets
            myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
        Next ws
    End Function
    حالا در سلولی که میخوایم در اون شمارش انجام بشه ررو این فرمول توش قرار میدیم
    کد:
    =myCountIf(I1,A1)
    یعنی ، کلمه ای که در سلول A1 اومده رو ببین چندبار از بین تمام رنج های I1 در شیت های مختلف تکرار شده
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.


  2. سپاس ها (2)


  3.  

  4. #2


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    اگه کسی دوست نداره از vb استفاده کنه میتونه از این فرمول استفاده کنه
    کد:
    =sumproduct(countif(indirect("'"&d3:d5&"'!a:a"), b2))
    در این فرمول a:a رنج مورد نظر که کلمات در شیتها در اون رنج هستن

    d35 مثلا من چندتا تا شیت دارم در این رنج نام شیت هایی که مدنظرم هست تا رد اونا جستجو انجام بشه رو مینویسم


  5. سپاس ها (1)


  6. #3


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    کد:
    Function myCountIf(rng As Range, criteria) As Long    Dim ws As Worksheet
    
    
        For Each ws In ThisWorkbook.Worksheets
            If ws.name <> "Sheet1" And ws.name <> "Sheet2" Then
                myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
            End If
        Next ws
    End Function
    این کد برای فقط دو شیت کار میکنه که مشخصه


  7. سپاس ها (1)


  8. #4


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    حالا اگه من ی حالت دیگه بخوام یعنی بگم 4 تا از شیت ها رو در نظر نگیر

    کد:
    Function myCountIf(rng As Range, criteria)AsLong    Dim i As Integer
    
        For i = 1 To ThisWorkbook.Worksheets.Count - 4
            myCountIf = myCountIf + WorksheetFunction.CountIf(ThisWorkbook.Worksheets(i).Range(rng.Address), criteria)
        Next i EndFunction


  9. سپاس ها (1)


  10. #5


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    کد:
    =SUMPRODUCT(COUNTIF(INDIRECT("Sheet"&{1,2,3,4,5}&"!K5"),"Active"))


  11. سپاس ها (1)


  12. #6


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    این کد دیگه نیاز به این نداره که تعداد شیت از قبل باید مشخص باشه و هر بار شیت جدید ایجاد شد و متن مورد نظر توش بود نشون میده
    اما ی مشکلی هست که حتما باید سلول رو دوبار کلیک کنم تا تغییرات رو نشون بده
    راهی هست که این مشکل رفع شه و مثل sum درجا تغییرات رو نشون بده


  13. سپاس ها (1)


  14. #7


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    این کد دیگه نیاز به این نداره که تعداد شیت از قبل باید مشخص باشه و هر بار شیت جدید ایجاد شد و متن مورد نظر توش بود نشون میده
    اما ی مشکلی هست که حتما باید سلول رو دوبار کلیک کنم تا تغییرات رو نشون بده
    راهی هست که این مشکل رفع شه و مثل sum درجا تغییرات رو نشون بده

    کد HTML:
    Function myCountIf(rng As Range, criteria) As Long    Dim ws As Worksheet
    
    
        For Each ws In ThisWorkbook.Worksheets
            myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
        Next ws
    End Function
    حالا در سلولی که میخوایم در اون شمارش انجام بشه ررو این فرمول توش قرار میدیم
    کد:
    کد HTML:
     =myCountIf(I1,A1)
    ویرایش توسط ~M*E*H*D*I~ : 2014/09/08 در ساعت 14:52


  15. سپاس ها (2)


  16. #8


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    بلاخره حلش کردم
    و این تابع و فانکشن مثل توابع ها بدون اپدیت تغییرات رو ثبت میکنه
    [CODE]
    کد:
    Function CountYes()  Application.Volatile  For sht = 1 To Sheets.Count   If Sheets(sht).Range("a1") = "a" Then     tmpYes = tmpYes + 1   End If  Next CountYes = tmpYes
    End Function
    بعدش از تابع زیر استفاده میکنم
    کد HTML:
     =CountYes()
    ویرایش توسط ~M*E*H*D*I~ : 2014/09/08 در ساعت 14:52


  17. سپاس ها (2)


  18. #9


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    در ضمن ممکنه دوستان بخوان چندین مورد رو در یک شیت مشخص کنن
    از این روش استفاده کنن
    فرضا ما میخوایم در سلول a1 در هر شیت (چه شیت هایی که بعدا اضافه میشه چه شیت های موجود) ممکنه ی تعدادی شیت حرف a و تعدادی حرفb باشه
    این نمونه کمک میکنه تا بتونین جندین مورد رو بدست بیارین

    برای محاسب a
    کد:
    Function CountYesa()  Application.Volatile
      For sht = 1 To Sheets.Count
       If Sheets(sht).Range("a1") = "a" Then
         tmpYesa = tmpYesa + 1
       End If
      Next
     CountYesa = tmpYesa
    End Function
    و تابع مربوط به اون میشه
    کد:
    =
    CountYesa
    ()
    و برای شمارش حرف B تو همه شیت ها
    کد:
    Function CountYesb()  Application.Volatile
      For sht = 1 To Sheets.Count
       If Sheets(sht).Range("a1") = "b" Then
         tmpYesb = tmpYesb + 1
       End If
      Next
     CountYesb = tmpYesb
    End Function
    با تابع
    کد:
    =
    CountYesb
    ()



  19. #10


    آخرین بازدید
    تاریخ عضویت
    January 2014
    نوشته ها
    799
    امتیاز
    1674
    سپاس
    593
    سپاس شده
    1,249 در 437 پست
    تعیین سطح نشده است

    در ضمن اون کدی که گفتم مشکل داره و هر بار باید فرمول نوشته بشه تا تغییرات رو نشون بده هم
    با قرار دادن این گزینه Application.Volatile هم حل میشه



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

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

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

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

  1. سوال در مورد نکته آموزشی انتقال اطلاعات سلول های مورد در شیت به شیت دیگر کاربر محترم absorkhi
    توسط علی فاطمی در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 9
    آخرين نوشته: 2014/06/16, 08:12
  2. جمع تعداد متغیر شیت
    توسط ali.b در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 2
    آخرين نوشته: 2014/04/18, 11:02
  3. فرمان چاپ یک شیت به تعداد افراد لیست
    توسط leilaasgharpour@ymail.com در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 13
    آخرين نوشته: 2014/02/11, 23:35
  4. جمع کردن تعداد یه نوشته در یه شیت
    توسط a.dal65 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 2
    آخرين نوشته: 2012/05/20, 22:41
  5. محدود کردن شیت به تعدادی ردیف مشخص؟
    توسط farzin24622 در انجمن سوالات اكسل - Excel Questions
    پاسخ ها: 2
    آخرين نوشته: 2011/09/10, 12:45

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

شمارش شیت ها در vb

شمارش یک کلمه در شیت های مختلف اکسل

کلمات کلیدی این موضوع

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

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

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