我有一个包含多个列的Excel电子表格,其中最重要的列称为"sequence"
,"modifications"
和"signal"
。名为"sequence"
的列包含许多条目,只要存在不同的"modification"
,它们就会重复。具有给定"修改的每个特定序列"分配了某些"信号"值。
Sequence Modification Signal
ABCDEF None 100
ABCDEF Carba 200
ABCDEF NEIAA 300
ABCDEF NEIAA,Carba 400
ABCDEFG None 400
ABCDEFG Carba 600
ABCDEFG NEIAA 700
ABCDEFG NEIAA, Carba 800
ABCDEFG 2XNEIAA 900
我遇到问题的任务包括将具有不同修改的相似序列聚类在一起,得到该特定组的信号总和,将来自各个组成分的信号除以该特定序列簇的计算总和,然后进行分组获得具有和不具有NEIAA标签的条目的百分比值,对组内具有NEIAA标签的所有条目求和并将其报告为该特定集群的最终"% MODIFICATION"
值。
例如序列" ABCDEF"总信号为1000,其中30%和40%属于具有NEIAA标签的条目,因此该特定群集的总% Modification
为70%。类似的序列" ABCDEFG"总%MODIF等于100*(700+800+900)/(400+600+700+800+900)
。
公式或VBA都适用于我。
答案 0 :(得分:0)
与
SUMIFS(C:C,A:A,A2)
你可以总结所有(你已经得到的)
和
SUMIFS(C:C,A:A,A2,B:B,"*NEIAA*")
您只能将包含NEIAA
把所有东西放在一起(我们只希望它在第一个序列中只有一次但是可以拖放)只需放入F2
=IF(AND(COUNTIF($A$1:A1,A2)=0,LEN(A2)>0),SUMIFS(C:C,A:A,A2,B:B,"*NEIAA*")/SUMIFS(C:C,A:A,A2),"")
如果您仍有疑问,请询问
COUNTIF($A$1:A1,A2)=0
只是第一次检查列A
中的值,而LEN(A2)>0)
只是跳过空白单元格;)
修改强>:
假设所有内容都向右移动而A列获得了一个唯一的关键字,因此A列和B列的每个组合就像现在只有A列一样,你可以试试这个:(放入G2然后自动填充)根据需要减少)
=IF(AND(COUNTIFS($B$1:B1,B2,$A$1:A1,A2)=0,LEN(B2)>0),SUMIFS(D:D,B:B,B2,C:C,"*NEIAA*",A:A,A2)/SUMIFS(D:D,B:B,B2,A:A,A2),"")
如上所述: - 一切都向右移动(在所有东西前插入列) - 列A现在保持“运行” - >总结具有相同“运行”和“序列”(以及“NEIAA” - 部分)的所有内容
如果您还有任何疑问,请询问:)