এক্সেল 2010 এ আমি কীভাবে অনন্য কমা-বিভাজিত মান গণনা করতে পারি


1

কমা-বিচ্ছিন্ন মানগুলির কলামে হাঁটতে এবং দেখা অনন্য মানের সংখ্যা গণনা করার জন্য আমার একটি সূত্র তৈরি করতে হবে । আমি এক্সেল 2010 ব্যবহার করছি I আমার কাছে কয়েকটি উদাহরণের ডেটার স্ক্রিনশট রয়েছে ...

ডেটা স্ক্রিন শট

এই ক্ষেত্রে সূত্রের আউটপুট 5 হওয়া উচিত অন্য কথায়, সূত্রটি নিম্নলিখিত মানগুলি গণনা করতে হবে: 2.3.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4

আমি কীভাবে সহজে কমা-বিভাজিত মানগুলির কাঁচা সংখ্যা গণনা করতে পারি তা আমি নির্ধারণ করেছি ...

= SUMPRODUCT (- (M123: M127 <> ""), LEN এর (M123: M127) -LEN (বিকল্প (M123: M127, ",", "")) + 1 টি)

যাইহোক, সেই সূত্রটি ফলন করে 7কারণ এটি 2.4.3 এবং 2.4.4 কে দুইবার গণনা করে।

একই কলামের বিভিন্ন কক্ষে পুনরায় কমা-বিভাজিত মানগুলি কীভাবে প্রত্যাখ্যান করা যায় সেজন্য আমি ক্ষতিতে আছি।

অন্যান্য সিস্টেমে যেগুলি স্প্রেডশিটের সাথে ইন্টারফেস করতে হবে, তার কারণে উত্তরগুলি কেবলমাত্র একটি সূত্র ব্যবহার করতে পারে; তাদের অবশ্যই ভিবিএ বা কোনও ধরণের ফিল্টার ব্যবহার করা উচিত নয়।

উত্তর:


1

আপনি যদি আপনার পত্রকে কিছু মধ্যবর্তী সূত্র যোগ করতে পারেন তবে এখানে একটি সম্ভাব্য সমাধান রয়েছে।

আপনার উদাহরণের রেঞ্জের উপর ভিত্তি করে:

কক্ষে রাখুন N123এটি অংশটি বামে ,বা পুরো সেলটিতে না হলে ফিরিয়ে দেয়,

=IFERROR(LEFT($M123,FIND(",",$M123)-1),M123)

কক্ষে রাখুন O123এটি অংশটি ডানে ,বা -যদি না দেয় তবে ফিরে আসে,

=IFERROR(TRIM(MID($M123,FIND(",",$M123)+1,999)),"-")

সেল রাখুন P123এই ফেরৎ 1যদি সেল N123তালিকায় অনন্য, প্লাস 1সেল যদি O123অদ্বিতীয়

=AND(ROW()+1=ROW($N$123:$N$127)+MATCH($N123,$N$123:$N$127,0),$N123<>"-")
+AND(ROW()=IFERROR(MATCH($O123,$N$123:$N$127,0),""),$O123<>"-")
+AND(ISNA(MATCH($N123,$N$123:$N$127,0)),ROW()+1=IFERROR(ROW($N$123:$N$127) 
    +MATCH($N123,$O$123:$O$127,0),FALSE),$N123<>"-")
+AND(ISNA(MATCH($O123,$N$123:$N$127,0)),ROW()+1=ROW($N$123:$N$127)
    +MATCH($O123,$O$123:$O$127,0),O123<>"-")

কক্ষগুলি N123..P123নিচে কপি করুনN123..P127

অনন্য আইটেম সংখ্যা =SUM(P123:Q127)

এটি ধরে নিয়েছে যে প্রতিটি ডেটা সেলটিতে সর্বাধিক 2 টি আইটেম রয়েছে। যদি এটি না হয় তবে আপনাকে আরও মধ্যবর্তী কলাম যুক্ত করতে হবে এবং সেই সূত্রে সূত্রটি প্রসারিত করতে হবে O123। যদি আরও 2 এর বেশি থাকে তবে এটি দ্রুত হাত থেকে সরে যাবে।

এফডব্লিউআইডাব্লু, আপনি বলেছেন যে কোনও ভিবিএ সমাধান কার্যকর নয়, তবে কোনও ভিবিএ ব্যবহারকারী সংজ্ঞায়িত ফাংশন ঠিক আছে?

এটি দেখতে কিছু হবে =CountUnique(M123:M127)


2

ভিবিএ ফাংশন ব্যবহার করে এখানে আরও একটি সমাধান দেওয়া হয়েছে। নিম্নলিখিতটি একটি মডিউলে আটকান।

Function ListCount(list As String, delimiter As String) As Long
Dim arr As Variant
arr = Split(list, delimiter)
ListCount = UBound(arr) - LBound(arr) + 1
End Function

Function RemoveDuplicates(list As String, delimiter As String) As String
Dim arrSplit As Variant, i As Long, tmpDict As New Dictionary, tmpOutput As String
arrSplit = Split(list, delimiter)
For i = LBound(arrSplit) To UBound(arrSplit)
    If Not tmpDict.Exists(arrSplit(i)) Then
        tmpDict.Add arrSplit(i), arrSplit(i)
        tmpOutput = tmpOutput & arrSplit(i) & delimiter
    End If
Next i
If tmpOutput <> "" Then tmpOutput = Left(tmpOutput, Len(tmpOutput) - Len(delimiter))
RemoveDuplicates = tmpOutput
'housekeeping
Set tmpDict = New Dictionary
End Function

তারপরে আপনার কার্যপত্রকটিতে, আপনি নিম্নলিখিত সূত্রটি ব্যবহার করতে পারেন:

=ListCount(RemoveDuplicates(A1,", "),", ")

A1আপনার কমা-বিচ্ছিন্ন তালিকাটি কোথায় ।

দ্রষ্টব্য: Microsoft Scripting Runtime আপনাকে আপনার ভিবিএ প্রকল্পের রেফারেন্স যুক্ত করতে হবে (নীচেTools > References... ভিবিএ প্রকল্প সম্পাদক উইন্ডোতে)।


যদি আপনি কিছু মনে করেন না, আপনি তাড়াতাড়ি বাইন্ডিংকে দেরীতে আবদ্ধ করতে রূপান্তর করতে পারেন । এইভাবে তাকে এবং অন্যান্য সমস্ত ব্যবহারকারীদের রেফারেন্স যুক্ত করতে হবে না। প্রারম্ভিক বাঁধাই সাধারণত অনেক বিভ্রান্তির দিকে নিয়ে যায়। আমার নিজস্ব ফার্মেও: "আরে, আপনার স্ক্রিপ্টটি কাজ করছে না here এখানে এসে এটিকে ঠিক ঠিক করুন!"
নিক্সদা

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

0

ক্রিস নীলসেনের ইনপুটটির ভিত্তিতে, আমি আমাদের সিস্টেমগুলি পরিবর্তন করতে এবং এটি ব্যবহার করার চেষ্টা করতে যাচ্ছি ... উত্স: মিঃ এক্সেল ফোরাম - পোস্ট করেছেন 1 জানুয়ারী, ২০১০ সকাল ১০:০৪ এ

Function UNIQUECOUNTIF(ByRef SR As Range, _
                        ByRef RR As Range, _
                        Optional ByVal Crit As Variant, _
                        Optional NCOUNT As Boolean = False, _
                        Optional POSTCODE As Boolean = False) As Long
Dim K1, K2, i As Long, c As Long, x, n As Long
K1 = SR: K2 = RR
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(K1, 1)
        If Not IsMissing(Crit) Then
            If LCase$(K1(i, 1)) = LCase$(Crit) Then
                If POSTCODE Then
                    x = Split(Replace(LCase$(K2(i, 1)), ",", " "), " ")
                Else
                    x = Split(LCase$(K2(i, 1)), ",")
                End If
                For c = 0 To UBound(x)
                    If POSTCODE Then
                        If IsNumeric(x(c)) Then
                            If Not .exists(x(c)) Then
                                .Add x(c), 1
                            ElseIf NCOUNT Then
                                .Item(x(c)) = .Item(x(c)) + 1
                            End If
                        End If
                    Else
                        If Not .exists(x(c)) Then
                            .Add x(c), 1
                        ElseIf NCOUNT Then
                            .Item(x(c)) = .Item(x(c)) + 1
                        End If
                    End If
                Next
            End If
        Else
            If POSTCODE Then
                x = Split(Replace(LCase$(K2(i, 1)), ",", " "), " ")
            Else
                x = Split(LCase$(K2(i, 1)), ",")
            End If
            For c = 0 To UBound(x)
                If POSTCODE Then
                    If IsNumeric(x(c)) Then
                        If Not .exists(x(c)) Then
                            .Add x(c), 1
                        ElseIf NCOUNT Then
                            .Item(x(c)) = .Item(x(c)) + 1
                        End If
                    End If
                Else
                    If Not .exists(x(c)) Then
                        .Add x(c), 1
                    ElseIf NCOUNT Then
                        .Item(x(c)) = .Item(x(c)) + 1
                    End If
                End If
            Next
        End If
    Next
    If .Count > 0 Then UNIQUECOUNTIF = Application.Sum(.items)
End With
End Function
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.