按组计算唯一值,在Excel中消除组间的重复项

时间:2016-09-18 14:32:48

标签: excel pivot-table

注意:我已经检查了这个count unique text values based on condition in another column between date criteria并且它无法解决我的问题。

我有一个包含姓名及其组的Excel图表。我希望按组分别计算,不重复。请参阅唯一(需求)列以获取所需的输出。目的是计算每月第一次出现的人数。

def isIn(char, aStr):
    '''
    char: a single character
    aStr: an alphabetized string

    returns: True if char is in aStr; False otherwise
    '''
    b = sorted(aStr)
    c = len(aStr)
    # print("string b " + str(b))
    # print("c " + str(c))
    # print("element middle: " + str(b[round(c/2)]))
    #print("char: " + str(char))
    #print(str(char) == str(b[round(c/2)]))
    if ((str(char) == str(b[round(c/2)]))): # this if statement does not seem to fire
        return True
    elif (c == 1 and char != str(b[round(c/2)])) or (c == 0 and char != "") :
        return False
        #print("false")
    else:

        #if str(char) == str(b[round(c/2)]):
         #   return True
           # print("true")
        if char > b[round(c/2)]:
            isIn(char, b[round(c/2):c])

        elif char < b[round(c/2)]:
            isIn(char, b[0:round(c/2)])
        else:
            return False
            #print('fales')

注意:虽然Ryan出现三次,但他只是第一次出现在任何一组中。要求最后一列“唯一”具有1或0,因此我们可以创建一个数据透视表,按“组”分组,如下所示:

Name    Group    Unique-(NEED THIS COLUMN)

Ryan    Jan-16   1 
Ryan    Jan-16   0 
Sam     Jan-16   1 
Sally   Feb-16   1 
Ryan    Feb-16   0 
Sam     Mar-16   0 
Tom     Mar-16   1 
Peter   Mar-16   1

每个组每月只列出一次名称,即使他们的名字出现在下个月,也不会重复。

1 个答案:

答案 0 :(得分:1)

如果名称是从A2开始,标题是A1,你可以在C2中开始使用它并下拉: -

=COUNTIF(A$1:A1,A2)=0

获取true / false值,或

=--(COUNTIF(A$1:A1,A2)=0)

获得1和0。