我正在尝试创建自定义函数来评估某些数据。数据包括从生物体中取出的一些样品(列中)和细菌+它们的大小(成行)。我知道哪些细菌是独特的(仅出现在1个样本中),但我想知道每个样本中有多少独特的细菌。
要知道哪些细菌是唯一的,我在每一行使用=COUNTIF(A:A,">"&0)
,如果返回1,则它是唯一的。
理想情况下,我正在考虑以下方面:
Function Custom(sampleRange, occurringBacteria) As Integer
Dim bacteriaUniqueToSample as Integer: bacteriaUniqueToSample = 0
For Each sampleRange And occurringBacteria
If sampleRange > 0 And occurringBacteria = 1
Then bacteriaUniqueToSample = bacteriaUniqueToSample + 1
Next
Custom = bacteriaUniqueToSample
End Function
当然,这是不可能的。
示例:
答案 0 :(得分:1)
在单元格B7
中输入此内容,然后复制到D7
=COUNTIFS(B$2:B$5,">"&0,$E$2:$E$5,"Unique")
答案 1 :(得分:1)
可以为此编写用户定义函数(又名 UDF )。虽然样本布局在具有函数的单元格与包含 Sample1,Sample2 等标签的单元格之间具有相关性,但为了更加通用,您需要提供更广泛的工作表关系。
Function uniq_bacts_by_sampl(rSample As Range, rOccurringBacteria As Range)
Dim cnt As Long, rw As Long, rng As Range
For rw = 1 To rOccurringBacteria.Rows.Count
Set rng = Application.Index(rOccurringBacteria, rw, 0)
If Application.CountIf(rng, ">" & 0) = 1 And _
CBool(Cells(rng.Row, rSample.Column).Value2) Then
cnt = cnt + 1
End If
Set rng = Nothing
Next rw
uniq_bacts_by_sampl = cnt
End Function
UDF可以像任何其他本机工作表函数一样使用。
语法:
= uniq_bacts_by_sampl(<带有标签条件>的单元格,<数据范围> )
上述样本图像B7中的公式为
=uniq_bacts_by_sampl(B$1, $B2:$D5)
根据需要填写。