我正在使用 Excel 2016,并且我有一个包含大量字符串的数据集,我需要找出给定范围内有多少个单元格(在本例中为“Geotech Data”!G:G)包含29 种不同字符串之一(CPT、DCP、Soakage、Clegg、Seismicity 等)。
我需要找到一种方法来计算至少存在一个字符串的单元格数量,确保不存在重复计算(有几种情况下,单个单元格中存在多个字符串) ,并且我需要能够在以后向搜索词列表中添加/删除字符串,因为我插入数据的程序会更改允许和不允许的数据类型。
我已经手动写出了浸泡、CPT、DCP 和 Clegg 的公式:
=(COUNTIF('Geotech Data'!G:G,"*CPT*")+COUNTIF('Geotech Data'!G:G,"*Clegg*")+COUNTIF('Geotech Data'!G:G,"*Soakage*")+COUNTIF('Geotech Data'!G:G,"*DCP*"))-((COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*Clegg*")+COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*Soakage*")+COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*DCP*") + COUNTIFS('Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*Soakage*")+COUNTIFS('Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*DCP*")+COUNTIFS('Geotech Data'!G:G,"*Soakage*",'Geotech Data'!G:G,"*DCP*"))-((COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*Soakage*")+COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*DCP*")+COUNTIFS('Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*Soakage*",'Geotech Data'!G:G,"*DCP*"))-COUNTIFS('Geotech Data'!G:G,"*CPT*",'Geotech Data'!G:G,"*Clegg*",'Geotech Data'!G:G,"*Soakage*",'Geotech Data'!G:G,"*DCP*")))
但是考虑到仅双倍就需要 29! (3.04883E+29)不同的COUNTIFS语句,显然不可行。
相关信息位于数据透视表中,当我的组织获得新信息时,将定期添加该信息。我已经尝试过以下变体:
IF(ISNUMBER(SEARCH()))
IF(SUMPRODUCT(--(NOT(ISERR(SEARCH())))))
IF(COUNT(SEARCH()))
=ARRAYFORMULA(SUMPRODUCT(((ISNUMBER(SEARCH("CPT",'Geotech Data'!G:G))+ISNUMBER(SEARCH("DCP",'Geotech Data'!G:G))+ISNUMBER(SEARCH("Clegg",'Geotech Data'!G:G))+ISNUMBER(SEARCH("Soakage",'Geotech Data'!G:G)))>0)*1))
(当我试图单步执行它以找出问题所在时,最后一个使我的 Excel 崩溃了)
并且 CONCATENATE 也不是一个选项,因为数据集已经几乎 1000x11 了。
“CONCATENATE 也不是一个选项,因为数据集已经几乎 1000x11”是什么意思,您的帖子似乎是在询问计算 G 列中给定字符串的实例数。
无论如何,您可以使用数组公式来完成,例如:
=SUM(--(MMULT(--ISNUMBER(SEARCH(TRANSPOSE(Sheet2!$A$1:$A$29), 'Geotech Data'!G:G)), ROW(Sheet2!$A$1:$A$29)^0) > 0))
在大数据集上它可能会非常慢。