谷歌表格/Excel公式从数字中辨别文本



预警,我请求Excel帮助,但在Google Sheets中运行我的电子表格。

我制作了一些不同的启用宏的表单,用户在其中进行锻炼,点击";完成";按钮,并将他们的结果记录在一个单独的工作表选项卡上。我正试图将其扩展到使用阻力带和重量的人。数据的不同之处在于,阻力带以文本形式输入,而权重则以数字形式输入。

我遇到的挑战是生成平均值;我正在尝试获得一个嵌套的IF公式,为所有有数字的单元格创建一个Average公式,为有文本的单元格创建Mode公式。用户可以选择一个下拉列表,IF语句将参考该下拉列表来搜索数字或文本。

这可能吗?只要文本和数值分开,我的两个公式就可以独立工作。我在谷歌上搜索了StackOverflow的解决方案,但我只找到了返回特定文本字符串的方法,而不是确定单元格中的值是数字还是文本。我特别想避免VBA。

提前感谢!

*编辑这是我正在努力实现的一个快速、简化的版本。通常情况下,我会在几个不同的选项卡上获得信息,但尽量使其易于可视化。A1中有一个经过验证的单元格;哑铃;或";带";。我在单元格D1&D2.我试图实现的是,如果A1=哑铃,它只对B6:B500中的数值求平均值(正如Scott Cramer所指出的,=平均值已经只处理数值(。挑战在于,如果A1=带,则D2中的公式仅评估带文本范围中的单元格,并返回这些符合条件的单元格的MODE。照原样,如果MODE是一个数值,它将返回数字。

示例电子表格屏幕截图

示例电子表格

您显然想要一个公式,该公式将根据单元格A1中的值是否为";带";或";哑铃";。试试这个:

=arrayformula( 
ifs( 
A1 = "Dumbbells", 
average(B6:B), 
A1 = "Bands", 
query( 
query( t(B6:B), "select Col1, count(Col1) where Col1 is not null group by Col1 order by count(Col1) desc label count(Col1) '' ", 0 ), 
"select Col1 limit 1", 
0 
), 
true, 
iferror(1/0)
) 
)

请注意,这是一个谷歌表单公式。

我的理解是mode()只接受数字,不会处理文本。

要获得最新的哑铃和腕带,请使用以下公式:

=filter( B6:B, row(B6:B) = max(row(B6:B) * isnumber(B6:B)) )
=filter( B6:B, row(B6:B) = max(row(B6:B) * not(isnumber(B6:B)) * not(isblank(B6:B)) ))

这应该返回"蓝色";。

=INDEX(SORT(FILTER({B6:B,COUNTIF(B6:B,B6:B)},ISTEXT(B6:B)),2,0),1,1)

请注意,它在excel中不起作用。

最新更新