ডেটা পরিবর্তিত হলে কীভাবে একটি এক্সেল অটো-ফিল্টারটি স্বতঃ-রিফ্রেশ করবেন?


15

ডেটা পরিবর্তন হয়ে গেলে আমি কীভাবে একটি এক্সেল অটো-ফিল্টারটি স্বতঃ-রিফ্রেশ করব?

কেস ব্যবহার করুন: আমি একটি ঘরের মান ফিল্টার করে এমন মানতে পরিবর্তন করি। আমি বর্তমান সারিটি অন্য কিছু না করে অদৃশ্য হয়ে যেতে চাই।


3
যখন আমি সেই কোডটি ওয়ার্কশিট_ক্যালকুলেট () ইভেন্টের পরিবর্তে ওয়ার্কশিট_চেনজ () ইভেন্টে রেখেছি তখন এটি কাজ করতে সক্ষম হয়েছি।
F106dart

1
এটি একটি উত্তর হিসাবে রাখুন এবং এটিকে মেনে নিন, যাতে অন্যেরা জানতে পারে যে আপনি কী করেছেন এবং প্রশ্নটির সমাধান হয়েছে।
জাজি

আমাকে আরেকটি পরিবর্তন করতে হয়েছিল কারণ গণনা একটি প্যারামিটার আশা করেছিল। এখন এটা কাজ করছে!.
sorin

উত্তর:


7

এর সাথে কোডটি এক্সচেঞ্জ করাও কৌতুকটি করতে পারে বলে মনে হচ্ছে (কমপক্ষে এক্সেল 2010 এ):

Private Sub Worksheet_Change(ByVal Target As Range)

    ActiveSheet.AutoFilter.ApplyFilter

End Sub

4

আমি দেখতে পেয়েছি যে আমি যখন টেবিলগুলির সাথে কাজ করেছি, এটি কাজ করে না। ফিল্টারটি শীটে নয় টেবিলের উপরে ছিল। এই কোডটি কৌশলটি করেছে

Private Sub Worksheet_Change(ByVal Target As Range)
    With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1")
         .AutoFilter.ApplyFilter
    End With
End Sub

আমি এখানে তথ্য পেয়েছি: http://www.jkp-ads.com/articles/Excel2007 টেবিল ভিবিএ.এএসপি


1

আপনার শীটের নামটিতে ডান ক্লিক করুন, "কোড দেখুন" চয়ন করুন এবং নীচের কোডটি আটকে দিন। পেস্ট করার পরে, উপরে বাম দিকে "ফাইল" এর নীচে এক্সেল আইকনটি ক্লিক করুন বা স্প্রেডশিট ভিউতে ফিরে আসতে Alt-F11 টাইপ করুন।

এটি অটো-রিফ্রেশ সক্ষম করবে। ম্যাক্রো সমর্থন মিথ্যা দিয়ে একটি ফর্ম্যাটে ফাইলটি সংরক্ষণ করতে ভুলবেন না .xlsm

Private Sub Worksheet_Change(ByVal Target As Range)

    If Me.FilterMode = True Then
        With Application
           .EnableEvents = False
           .ScreenUpdating = False
        End With

        With ActiveWorkbook
            .CustomViews.Add ViewName:="Mine", RowColSettings:=True
          Me.AutoFilterMode = False
            .CustomViews("Mine").Show
            .CustomViews("Mine").Delete
        End With


         With Application
           .EnableEvents = True
           .ScreenUpdating = True
        End With
    End If

End Sub

1

আমি Worksheet_Changeইভেন্টের উপর ভিত্তি করে একটি ভিবিএ / ম্যাক্রোও ব্যবহার করি তবে আমার পদ্ধতিটি কিছুটা আলাদা ... ঠিক আছে, প্রথমে কোডটি এবং তারপরে ব্যাখ্যাগুলি:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' first remove filter
    ActiveSheet.Range("$L$1:$L$126").AutoFilter Field:=1        
    ' then apply it again
    ActiveSheet.Range("$L$1:$L$126").AutoFilter Field:=1, Criteria1:="<>0"
End Sub

( বিকাশ প্যানেলটি উপস্থিত হওয়ার জন্য Alt+ F11কী সংমিশ্রণটি ব্যবহার করুন এবং আপনি স্বয়ংক্রিয়ভাবে সতেজতা পেতে চান এমন ফিল্টারযুক্ত ওয়ার্কশিটে কোডটি পেস্ট করুন))

আমার উদাহরণে আমি ধরে নিচ্ছি যে একটি একক কলামে (আমার ক্ষেত্রে এল) একটি সাধারণ ফিল্টার রয়েছে এবং আমার তথ্য পরিসীমাটি 1 থেকে 126 (এমনকি এতে শিরোনাম থাকতে পারে) থেকে সারিগুলিতে রয়েছে (যথেষ্ট সংখ্যক যথেষ্ট চয়ন করুন নিশ্চিত)। অপারেশনটি সহজ: আমার শিটটিতে কিছু পরিবর্তন হওয়ার সাথে সাথে নির্দিষ্ট রেঞ্জের ফিল্টারটি সরিয়ে ফেলা / পুনরায় প্রয়োগ করা হয় যাতে তা সতেজ হওয়া যায়। এখানে কিছুটা ব্যাখ্যা দরকার যা হ'ল ফিল্ড এবং মাপদণ্ড

ফিল্ড একটি পূর্ণসংখ্যা পরিসীমা অফসেট হয়। আমার ক্ষেত্রে, আমার কেবলমাত্র একটি একক কলাম ফিল্টার রয়েছে এবং ব্যাপ্তিটি একটি একক কলাম (এল) দ্বারা তৈরি করা হয় যা পরিসরের প্রথমটি (তাই আমি মান হিসাবে 1 ব্যবহার করি)।

নির্ণায়ক একটি স্ট্রিং, যাতে ডাটা পরিসীমা প্রয়োগ করতে ফিল্টার বর্ণনা করে। আমার উদাহরণে, আমি কেবল সারি দেখাতে চাই যেখানে এল কলাম 0 থেকে পৃথক হয় (সুতরাং আমি "<> 0" ব্যবহার করেছি)।

এখানেই শেষ. রেঞ্জ.আউটো ফিল্টার পদ্ধতি সম্পর্কে আরও রেফারেন্সের জন্য, দেখুন: https://msdn.microsoft.com/en-us/library/office/ff193884.aspx


0

কেবল উত্তর (গুলি) একত্রিত করার জন্য:

সোরিন বলেছেন:

আপনার শীটের নামটিতে ডান ক্লিক করুন, "কোড দেখুন" চয়ন করুন এবং নীচের কোডটি আটকে দিন। পেস্ট করার পরে, উপরে বাম দিকে "ফাইল" এর নীচে এক্সেল আইকনটি ক্লিক করুন বা স্প্রেডশিট ভিউতে ফিরে আসতে Alt-F11 টাইপ করুন।

এটি অটো-রিফ্রেশ সক্ষম করবে। ম্যাক্রো সমর্থন মিথ্যা .xlsm সহ একটি ফর্ম্যাটে ফাইলটি সংরক্ষণ করতে ভুলবেন না।

এবং ক্রিস এই কোডটি ব্যবহার করেছেন (যা আমি কেবল ২০১০ সালে করেছি):

Private Sub Worksheet_Change(ByVal Target As Range)

    ActiveSheet.AutoFilter.ApplyFilter

End Sub

আপনি যদি পোস্টটি প্রসারিত না করেন তবে আপনি কেবল দীর্ঘ উত্তরটি দেখতে পাবেন! ;)


-1

দুঃখিত, মন্তব্য করতে অপর্যাপ্ত প্রতিনিধি। (প্রশাসকগণ, উপরের কোনও মন্তব্যে এটিকে নির্দ্বিধায় কাটান feel) ব্যবহারকারী "ড্যানিকোট্রা" প্রতিক্রিয়াটি "আমি ওয়ার্কশিট_চেনজ ইভেন্টের উপর ভিত্তি করে একটি ভিবিএ / ম্যাক্রো ব্যবহার করি তবে আমার পদ্ধতির ..."
প্রথম ফিল্টার সরান
"এর পরে এটি প্রয়োগ করুন
এক্সেল 2007+ ব্যবহার করার সময় আবার সঠিক সমাধান। তবে .আউটফিল্টার.অ্যাপ্লিফিল্টারটি XL03 এবং তার আগে অবৈধ তাই আমি নীচের পথটি দেখাব।

আমি অনুরোধ করি যে সত্য বিশেষজ্ঞগণ এবং গুরুরা কোডটি পড়েছেন কারণ আমি যথেষ্ট আত্মবিশ্বাসী যে এটি শীর্ষ শেল্টের উপাদান। নীচে কী ভাল জিনিস করা হচ্ছে তা লোকেরা দেখলে এই উত্তরের অবর্ণনীয় ডাউনভোট গণনাটি বিপরীত হতে পারে।

ড্যানিকোট্রা একটি সরল উদাহরণ ব্যবহার করেছে। আসলে, আপনি আরও সাধারণভাবে এটি করতে পারেন। নিম্নলিখিতগুলির জন্য অ্যাক্টিভশিট সহ ধরে নিন (বা অন্য কোনও শিট অবজেক্ট):

  1. স্ব-ফিল্টার পরিসীমা সংরক্ষণ করুন। এটিতে .আউটফিল্টার.ফিল্টারস.কাউন্ট কলাম এবং (.আউটোফিল্টার.রেঞ্জ.কাউন্ট / .আউটফিল্টার.ফিল্টারস.কাউন্ট) সারি রয়েছে, rngAutofilter এ সংরক্ষিত হয়েছে

  2. .আউটফিল্টার.ফিল্টারস.আউটফিল্টার আইটেমগুলির প্রত্যেকের 4 টি বৈশিষ্ট্যের প্রত্যেকটিতে একটি অ্যারে আমার অটোফিল্টার সংগ্রহ করুন, যখন আপনি "অ্যাপ্লিকেশন-সংজ্ঞায়িত ত্রুটিগুলি" এড়াতে পারেন সেদিকে খেয়াল রেখে .অনু অথবা .অ্যাপেটরটি মিথ্যা is (myAutofilters প্রথম ধাপে সারি এবং কলামগুলির সংখ্যার সাথে পুনঃনির্দেশিত হবে)

  3. ফিল্টারটি বন্ধ করুন তবে ড্রপডাউনগুলি সংরক্ষণ করুন। শোআলডাটা দিয়ে

  4. প্রতিটি ফিল্টার আইটেমের জন্য ছিল your আবার সাবধান হয়ে নিন যে আপনি যখন "অ্যাপ্লিকেশন-সংজ্ঞায়িত ত্রুটিগুলি" এড়িয়ে চলেছেন। অপারেটরটি মিথ্যা, তাই প্রতিটি আইটেমের জন্য "i",
    rngAutofilter.OutoFilter ক্ষেত্র: = i, মানদণ্ড 1: = myAutofilters (i, 2)
    বা
    rngAutofilter.OutoFilter ক্ষেত্র: = i, মাপদণ্ড 1: = myAutofilters (i, 2), অপারেটর: = myAutofilters (i, 3), মানদণ্ড 2: = myAutofilters (i, 4)

এখন অটোফিল্টারটি আপনার কোডটি শুরুর আগে যেমন ছিল তেমনই পরিসীমাতে পুনরায় স্থাপন করা হবে, তবে ডেটা পরিবর্তনের জন্য অটোফিল্টার আপডেট করা হয়েছে।

Public myAutofilters As Variant, rngAutofilter As Range 'Public
Sub SaveAndRestoreAutofilters()
  'This will update the autofilter display to recognize data changes by turning autofilter off and then on, preserving all characteristics
  'Note, XL2007 and later have .autofilter.applyfilter, but not the invaluable XL03 and earlier
  Dim i As Long, iNumAutofilters As Long, iNumActiveAutofilters As Long
  iNumActiveAutofilters = SaveAutoFilterInfo(iNumAutofilters) 'NOTE! Use CALL or assignment to prevent parentheses from forcing ByVal !
  If iNumActiveAutofilters < 1 Then
      Application.StatusBar = "0 ACTIVE filters;" & iNumAutofilters & " autofilters"
      Exit Sub
  End If
  ActiveSheet.ShowAllData

  Rem Here optionally do stuff which can include changing data or toggling autofilter columns

  For i = 1 To iNumAutofilters
      If myAutofilters(i, 1) Then
          If myAutofilters(i, 3) <> 0 Then 'then .Operator is something, so set it and Criteria2, else just Criteria1
              rngAutofilter.AutoFilter Field:=i, Criteria1:=myAutofilters(i, 2), Operator:=myAutofilters(i, 3), Criteria2:=myAutofilters(i, 4) ', On:=true by rule
          Else
              rngAutofilter.AutoFilter Field:=i, Criteria1:=myAutofilters(i, 2) ', On:=true by rule (it's R/O anyway)
          End If
          Rem Selection.AutoFilter Field:=i 'How you'd "turn off" only a single column's autofiltering. FYI .On is R/O!
      End If
      'activesheet.autofiltermode=false 'just FYI, how you comprehensively turn off filtering on a sheet (erasing the dropdowns and criteria and filter range!)
  Next i
End Sub
Function SaveAutoFilterInfo(iNumAutofilters As Long) As Long
  Dim i As Long, iRowsAutofiltered As Long
  SaveAutoFilterInfo = 0 'counts the number that are .On, and returns the total
  iNumAutofilters = ActiveSheet.AutoFilter.Range.Columns.Count
  If ActiveSheet.AutoFilter.Filters.Count <> iNumAutofilters Then MsgBox "I can't explain this. All bets are off. Aborting.": Exit function
  ReDim myAutofilters(1 To iNumAutofilters, 4)
  For i = 1 To iNumAutofilters
      myAutofilters(i, 1) = ActiveSheet.AutoFilter.Filters(i).On
      If myAutofilters(i, 1) Then
          SaveAutoFilterInfo = SaveAutoFilterInfo + 1
          myAutofilters(i, 2) = ActiveSheet.AutoFilter.Filters(i).Criteria1
          myAutofilters(i, 3) = ActiveSheet.AutoFilter.Filters(i).Operator
          If myAutofilters(i, 3) <> 0 Then 'then is either xlAnd, xlOr, etc., and there's a second criteria
              myAutofilters(i, 4) = ActiveSheet.AutoFilter.Filters(i).Criteria2
          End If
      End If
  Next i
  iRowsAutofiltered = ActiveSheet.AutoFilter.Range.Count / ActiveSheet.AutoFilter.Range.Columns.Count
  Set rngAutofilter = Cells(ActiveSheet.AutoFilter.Range.Row, ActiveSheet.AutoFilter.Range.Column).Resize(iRowsAutofiltered, iNumAutofilters)
End Function

কেন ওয়ার্ল্ডের মধ্যে কেউ এই দরকারী উত্তরটিকে নীচে নামিয়ে দেবে, যার মধ্যে সম্পূর্ণ স্ব-স্থায়ী কোড (এবং ভারী পরীক্ষিত) অন্তর্ভুক্ত রয়েছে, এমনকি কোডটিরও বিশদ বিবরণ দেওয়া আছে? আমি জিজ্ঞাসা করছি, গুরুত্ব সহকারে। লোকেরা কি সুপারভাইজারে ভাল পেশাদার সহায়তা চায় বা আমারও বিরক্ত করা উচিত নয়? তুলনামূলকভাবে নিজেকে উত্সাহিত করার জন্য এমন কী ট্রল রয়েছে যা কেবলমাত্র নিম্নমানের হয় ??
মাইক্রোসফ্টসহোল্ডবিকিকডইননাটস

2
কমপক্ষে আপনার যদি কম হয় তবে মন্তব্য করার জন্য B___ গুলি থাকতে হবে, তাই আমি সম্প্রদায়ে আরও ভালভাবে পরিষেবা দেওয়ার জন্য প্রতিক্রিয়াটি ব্যবহার করতে পারি। প্রশাসকগণ, এটি আমি প্রস্তাব করতে চাই would সমস্ত ডাউনভোটের একটি ব্যাখ্যামূলক মন্তব্য প্রয়োজন। আমি অনেক স্পষ্টত দুর্দান্ত পোস্টগুলি অনভিজ্ঞায়িতভাবে ডাউনভোটে দেখেছি, যা সত্যিই সুপারউজারে একটি মহামারী বলে মনে হয় - এবং অন্য কোথাও নেই।
মাইক্রোসফ্টসহোল্ডবিকিকডইননাটস

"সমস্ত ডাউনটাতে একটি ব্যাখ্যামূলক মন্তব্য দরকার" এর জন্য +1 করুন।
গ্র্যাভিট করুন

-1
এক্সেলের মধ্যে "ডেটা, টেবিল থেকে" / পাওয়ার কোয়েরি ব্যবহার করে, যা ফাইল খোলার সময় ডেটা রিফ্রেশ করার বিকল্প দেয়।
(এছাড়াও স্বয়ংক্রিয় বাছাই, এবং সূচী কলাম (নম্বরগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করা সারিগুলি))

এটি অন্য শীটে ফলাফল তৈরি করবে।

- মাউস (সারি এবং কলাম) ব্যবহার করে প্রয়োজনীয় ডেটা নির্বাচন করুন
টেবিল থেকে ডেটা ট্যাবে ক্লিক করুন
শেষ কলামে, ফাঁকা বাদ দিন (alচ্ছিক, যদি আপনি কেবল ভরাট ঘরগুলি প্রদর্শন করতে চান)
-ডিড কলাম, ইনডেক্স কলাম (alচ্ছিক, যদি আপনি ফিল্টার করা ফলাফলগুলিতে সারি নম্বর যুক্ত করতে চান)
বন্ধ এবং লোড

আবার সম্পাদনা করতে, ক্যোয়ারী ট্যাবে ক্লিক করুন এবং তারপরে সম্পাদনা করুন

রিফ্রেশ নীচে তীর উপর এক্সেল ডিজাইন ট্যাব ক্লিক করুন, সংযোগ বৈশিষ্ট্য,
ফাইল খোলার সময় ডেটা রিফ্রেশ করুন।


অভিযোজিত থেকে: https://www.excelcampus.com/tips/sort-DP-down-lists-automatic/
অংশ: ৩. পাওয়ার কোয়েরি ব্যবহার করে ড্রপ ডাউন তালিকা বাছাই করা


খালি না থাকলে আপনি শীট 1 থেকে ডেটা অনুলিপি করতে পারেন, উদাহরণস্বরূপ ক্ষেত্র এ 1।
এটিকে 1 শীট 2 এ অনুলিপি করুন:
= যদি (পত্রক 1 ক 1 "!"; পত্রক 1 ক 1; "")

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.