Excel条件数据和文本操作

时间:2016-02-09 07:20:21

标签: excel excel-vba excel-formula vba

我有一个包含多个列的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都适用于我。

我的示例数据如下: enter image description here

1 个答案:

答案 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” - 部分)的所有内容

sample

如果您还有任何疑问,请询问:)