我必须准备一份产品库存表。所以我有小号、中号和大号三种尺寸。我们从供应商处收到的详细信息包含一栏,其中包含缩写尺寸 S/M/L。但我用小/中/大来准备我的表格版本。
那么我如何简单地检查是否:
case "S": Small
case "M": Medium
case "L": "Large"
default
从 Excel 2016 开始,使用 SWITCH 可以轻松解决这个问题。但最近我不得不再次使用Excel 2010一段时间,那里没有SWITCH功能。使用您的示例,这是一个不使用 SWITCH 的解决方案:
=IFERROR(CHOOSE(SUM((A1={"S";"M";"L"})*ROW(INDIRECT(1&":"&3))),"SMALL","MEDIUM","LARGE"),"else case")
由于是数组公式,所以必须按CTRL+SHIFT+ENTER才能生效。
其工作原理如下:
Select Case sizeString
Case Is = "S"
Size = "Small"
Case Is = "M"
Size = "Medium"
Case Is = "L"
Size = "Large"
Case Else
MsgBox ("There was an error with sizeString- did not contain an expected value.")
End Select
-TheSilkCode
选择相关列(此处假定为
A
),然后开始 > 样式 - 条件格式、新规则...,使用公式确定要设置格式的单元格并格式化此公式为真的值::
=A1="S"
格式...,数字,类别:
Custom
,类型:@"mall"
,OK,OK。
然后以类似的方式为“M”和“L”添加规则。
Microsoft 将 SWITCH、IFS 和 IFVALUES 替换为仅 CHOOSE 功能。
=CHOOSE($L$1,"index_1","Index_2","Index_3")
L1 必须等于系列的某个索引号部分。
Excel 引入了一个新的 SWITCH 函数,其基本上具有
=SWITCH(Expression, value1, result1, value2, result2.....)
的形式。应该有帮助。
如果您有 Excel 2010,请执行以下操作:
=IFERROR(VLOOKUP(Target, {"S","Small"; "M","Medium"; "L","Large"}, 2, FALSE), "else case")
本质上它所做的就是,它在数组的第一列中找到
Target
值,并且 2
告诉它返回相应行的第二列。 FALSE
参数告诉它除了精确匹配之外不要返回任何内容(否则,条目“S”,“M”,“L”必须按字母顺序排序才能工作),并且当有IFERROR
不处理任何精确匹配。
事实证明它比我想象的要简单得多。 只需使用正确的参数调用正确的函数即可。 事实上,它是如此简单,以至于我根本考虑不发布它 - 但后来我意识到其他解决方案都不能在 Excel 2010 中工作;最好的是 Froha 的答案,它从 Excel 2013 开始工作。