将基于单元格内容的条件格式复制到其他行

时间:2017-04-02 15:03:48

标签: excel conditional conditional-formatting

我有一张包含我数据库的所有用户名和电子邮件地址的工作表

在另一张表格中我有一个列“用户名”,在这里我要输入用户名,如果此处输入的用户名已经在另一张表的列表中,则字段内容应将颜色更改为红色。

我想出了如何对单元格进行条件格式化,所以我做了这个公式:

=COUNTIF('Usernames and emails'!A5:A1450;$A$7)>0

此公式适用于A7中的单元格。

但是,当我将A7一直拖到表格底部时,不会复制条件格式设置公式。例如,当我在A8中键入与A7中相同的用户名时,A7字段将变为红色,但A8将保持不变。

我需要在大约1000多个字段上进行格式化,因此为每一个字段制定规则都不是解决方案吗?

示例:

工作表:用户名和电子邮件:

test1
test2
test3

工作表:我必须在A列的每一行输入用户名,所以我输入如下:

A1 : test
A2 : test1
A3 : test4
A4 : test3

在这个例子中,A2和A4应该用红色着色,因为它们的值对应于我的“用户名和电子邮件”工作表列表中的值

2 个答案:

答案 0 :(得分:2)

根据here,您可以使用

    import numpy as np
    import matplotlib.pyplot as plt

    def Lorentzian(xx):
        if not hasattr(xx, '__iter__'):
            xx = [ xx ]
        res = np.zeros(len(xx))
        for i in range(len(xx)):
            x = xx[i]
            if np.fabs(x) < 0.1:
                res[i] =  1./3. - x**2/15. + 2.* x**4 / 189. - x**6/675. + 2.* x**8 / 10395. - 1382. * x**10 / 58046625. + 4. * x**12 / 1403325.
            else:
                res[i] = (1./x**2 - 1./np.sinh(x)**2)
        return res


    amp = 18e-3 
    a = 1/.61e3
    b = 5.5
    t_min = 0 
    dt = 1/5e6
    t_max = (10772) * dt
    t = np.arange(t_min,t_max,dt)
    x_min = -amp/b
    x_max = amp/b
    dx =  dt*(x_min-x_max)/(t_min-t_max)
    x = np.arange(x_min,x_max,dx)

    func1 = lambda x : Lorentzian(b*(x/a))

    def distrib(x):
        res = np.zeros(np.size(x))
        res[int(np.floor(np.size(x)/3))] = 1
        res[int(3*np.floor(np.size(x)/4))] = 3
        return res
    func2 = lambda x,xs : np.convolve(distrib(x), func1(xs), 'same')

    plt.plot(x, func2(x,x))
    plt.xlabel('x (m)')
    plt.ylabel('normalized signal')

我在一些组成的数据上对此进行了测试并且它有效(尽管注意到该线程中的某些人似乎遇到了一些问题)。

除此之外,您应该锚定整个范围,而不是比较单元格,因此:

=MATCH(A1,'Usernames and emails'!A:A,0)

答案 1 :(得分:0)

  • 选择要应用条件格式的范围。在这种情况下,似乎是A7:A1007。 A7应该是'活跃的细胞'。
  • 使用此公式创建条件格式规则:
    =countif('Usernames and emails'!$A$5:$A$1450; $A7)

    请注意$A$5:$A$1450而不是A5:A1450和{{ 1}}而不是$A7