预警,我请求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中不起作用。