ডেটা পরিবর্তন হয়ে গেলে আমি কীভাবে একটি এক্সেল অটো-ফিল্টারটি স্বতঃ-রিফ্রেশ করব?
কেস ব্যবহার করুন: আমি একটি ঘরের মান ফিল্টার করে এমন মানতে পরিবর্তন করি। আমি বর্তমান সারিটি অন্য কিছু না করে অদৃশ্য হয়ে যেতে চাই।
ডেটা পরিবর্তন হয়ে গেলে আমি কীভাবে একটি এক্সেল অটো-ফিল্টারটি স্বতঃ-রিফ্রেশ করব?
কেস ব্যবহার করুন: আমি একটি ঘরের মান ফিল্টার করে এমন মানতে পরিবর্তন করি। আমি বর্তমান সারিটি অন্য কিছু না করে অদৃশ্য হয়ে যেতে চাই।
উত্তর:
আমি দেখতে পেয়েছি যে আমি যখন টেবিলগুলির সাথে কাজ করেছি, এটি কাজ করে না। ফিল্টারটি শীটে নয় টেবিলের উপরে ছিল। এই কোডটি কৌশলটি করেছে
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 টেবিল ভিবিএ.এএসপি
আপনার শীটের নামটিতে ডান ক্লিক করুন, "কোড দেখুন" চয়ন করুন এবং নীচের কোডটি আটকে দিন। পেস্ট করার পরে, উপরে বাম দিকে "ফাইল" এর নীচে এক্সেল আইকনটি ক্লিক করুন বা স্প্রেডশিট ভিউতে ফিরে আসতে 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
আমি 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
কেবল উত্তর (গুলি) একত্রিত করার জন্য:
সোরিন বলেছেন:
আপনার শীটের নামটিতে ডান ক্লিক করুন, "কোড দেখুন" চয়ন করুন এবং নীচের কোডটি আটকে দিন। পেস্ট করার পরে, উপরে বাম দিকে "ফাইল" এর নীচে এক্সেল আইকনটি ক্লিক করুন বা স্প্রেডশিট ভিউতে ফিরে আসতে Alt-F11 টাইপ করুন।
এটি অটো-রিফ্রেশ সক্ষম করবে। ম্যাক্রো সমর্থন মিথ্যা .xlsm সহ একটি ফর্ম্যাটে ফাইলটি সংরক্ষণ করতে ভুলবেন না।
এবং ক্রিস এই কোডটি ব্যবহার করেছেন (যা আমি কেবল ২০১০ সালে করেছি):
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.AutoFilter.ApplyFilter
End Sub
আপনি যদি পোস্টটি প্রসারিত না করেন তবে আপনি কেবল দীর্ঘ উত্তরটি দেখতে পাবেন! ;)
দুঃখিত, মন্তব্য করতে অপর্যাপ্ত প্রতিনিধি। (প্রশাসকগণ, উপরের কোনও মন্তব্যে এটিকে নির্দ্বিধায় কাটান feel) ব্যবহারকারী "ড্যানিকোট্রা" প্রতিক্রিয়াটি "আমি ওয়ার্কশিট_চেনজ ইভেন্টের উপর ভিত্তি করে একটি ভিবিএ / ম্যাক্রো ব্যবহার করি তবে আমার পদ্ধতির ..."
প্রথম ফিল্টার সরান
"এর পরে এটি প্রয়োগ করুন
এক্সেল 2007+ ব্যবহার করার সময় আবার সঠিক সমাধান। তবে .আউটফিল্টার.অ্যাপ্লিফিল্টারটি XL03 এবং তার আগে অবৈধ তাই আমি নীচের পথটি দেখাব।
আমি অনুরোধ করি যে সত্য বিশেষজ্ঞগণ এবং গুরুরা কোডটি পড়েছেন কারণ আমি যথেষ্ট আত্মবিশ্বাসী যে এটি শীর্ষ শেল্টের উপাদান। নীচে কী ভাল জিনিস করা হচ্ছে তা লোকেরা দেখলে এই উত্তরের অবর্ণনীয় ডাউনভোট গণনাটি বিপরীত হতে পারে।
ড্যানিকোট্রা একটি সরল উদাহরণ ব্যবহার করেছে। আসলে, আপনি আরও সাধারণভাবে এটি করতে পারেন। নিম্নলিখিতগুলির জন্য অ্যাক্টিভশিট সহ ধরে নিন (বা অন্য কোনও শিট অবজেক্ট):
স্ব-ফিল্টার পরিসীমা সংরক্ষণ করুন। এটিতে .আউটফিল্টার.ফিল্টারস.কাউন্ট কলাম এবং (.আউটোফিল্টার.রেঞ্জ.কাউন্ট / .আউটফিল্টার.ফিল্টারস.কাউন্ট) সারি রয়েছে, rngAutofilter এ সংরক্ষিত হয়েছে
.আউটফিল্টার.ফিল্টারস.আউটফিল্টার আইটেমগুলির প্রত্যেকের 4 টি বৈশিষ্ট্যের প্রত্যেকটিতে একটি অ্যারে আমার অটোফিল্টার সংগ্রহ করুন, যখন আপনি "অ্যাপ্লিকেশন-সংজ্ঞায়িত ত্রুটিগুলি" এড়াতে পারেন সেদিকে খেয়াল রেখে .অনু অথবা .অ্যাপেটরটি মিথ্যা is (myAutofilters প্রথম ধাপে সারি এবং কলামগুলির সংখ্যার সাথে পুনঃনির্দেশিত হবে)
ফিল্টারটি বন্ধ করুন তবে ড্রপডাউনগুলি সংরক্ষণ করুন। শোআলডাটা দিয়ে
প্রতিটি ফিল্টার আইটেমের জন্য ছিল 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
এক্সেলের মধ্যে "ডেটা, টেবিল থেকে" / পাওয়ার কোয়েরি ব্যবহার করে, যা ফাইল খোলার সময় ডেটা রিফ্রেশ করার বিকল্প দেয়। (এছাড়াও স্বয়ংক্রিয় বাছাই, এবং সূচী কলাম (নম্বরগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করা সারিগুলি)) এটি অন্য শীটে ফলাফল তৈরি করবে। - মাউস (সারি এবং কলাম) ব্যবহার করে প্রয়োজনীয় ডেটা নির্বাচন করুন টেবিল থেকে ডেটা ট্যাবে ক্লিক করুন শেষ কলামে, ফাঁকা বাদ দিন (alচ্ছিক, যদি আপনি কেবল ভরাট ঘরগুলি প্রদর্শন করতে চান) -ডিড কলাম, ইনডেক্স কলাম (alচ্ছিক, যদি আপনি ফিল্টার করা ফলাফলগুলিতে সারি নম্বর যুক্ত করতে চান) বন্ধ এবং লোড আবার সম্পাদনা করতে, ক্যোয়ারী ট্যাবে ক্লিক করুন এবং তারপরে সম্পাদনা করুন রিফ্রেশ নীচে তীর উপর এক্সেল ডিজাইন ট্যাব ক্লিক করুন, সংযোগ বৈশিষ্ট্য, ফাইল খোলার সময় ডেটা রিফ্রেশ করুন। অভিযোজিত থেকে: https://www.excelcampus.com/tips/sort-DP-down-lists-automatic/ অংশ: ৩. পাওয়ার কোয়েরি ব্যবহার করে ড্রপ ডাউন তালিকা বাছাই করা খালি না থাকলে আপনি শীট 1 থেকে ডেটা অনুলিপি করতে পারেন, উদাহরণস্বরূপ ক্ষেত্র এ 1। এটিকে 1 শীট 2 এ অনুলিপি করুন: = যদি (পত্রক 1 ক 1 "!"; পত্রক 1 ক 1; "")