在excel中怎么用公式实现以A、AB、B、BC、C、CD、D字母为递减等级分类,取等级最小的为结果。
答案:2 悬赏:60 手机版
解决时间 2021-03-21 05:26
- 提问者网友:山高云阔
- 2021-03-20 14:30
在excel中怎么用公式实现以A、AB、B、BC、C、CD、D字母为递减等级分类,取等级最小的为结果。
最佳答案
- 五星知识达人网友:煞尾
- 2021-03-20 15:43
排序就出来了。追问不是列,是行单元格,需要公式自动输出最小值追答假设你的数据在A列,且每组字母之间是用一个空格 (注意仅一个空格 )隔开。
然后我给你编写了一段程序。你右键当前工作表标签——查看代码——粘贴我给你的代码——F5运行即可。
Sub a()
Dim d As Object, i%, arr
For i = 1 To [a65536].End(3).Row
Set d = CreateObject("Scripting.Dictionary")
arr = Split(Range("A" & i), " ")
For j = 0 To UBound(arr)
If Not d.exists(arr(j)) Then d.Add arr(j), ""
Next j
Range("IV2").Resize(d.Count) = WorksheetFunction.Transpose(d.keys)
Range("IV:IV").Sort key1:=Range("IV1")
Range("B" & i) = [IV65536].End(3)
Range("IV:IV").Clear
Set d = Nothing
Next i
End Sub
这是运行效果。
追问编程太麻烦了,我就想问一下有没有对应的逻辑公式,比如公式中定义A、AB或者CD为数字,判断后直接输出最小值;
我是把字母替换成数字,输出最小值来处理的。
然后我给你编写了一段程序。你右键当前工作表标签——查看代码——粘贴我给你的代码——F5运行即可。
Sub a()
Dim d As Object, i%, arr
For i = 1 To [a65536].End(3).Row
Set d = CreateObject("Scripting.Dictionary")
arr = Split(Range("A" & i), " ")
For j = 0 To UBound(arr)
If Not d.exists(arr(j)) Then d.Add arr(j), ""
Next j
Range("IV2").Resize(d.Count) = WorksheetFunction.Transpose(d.keys)
Range("IV:IV").Sort key1:=Range("IV1")
Range("B" & i) = [IV65536].End(3)
Range("IV:IV").Clear
Set d = Nothing
Next i
End Sub
这是运行效果。
追问编程太麻烦了,我就想问一下有没有对应的逻辑公式,比如公式中定义A、AB或者CD为数字,判断后直接输出最小值;
我是把字母替换成数字,输出最小值来处理的。
全部回答
- 1楼网友:woshuo
- 2021-03-20 16:54
可以这样
A~D分别定义为7、6、5、4、3、2、1,那下面的单元格可以写一个对应函数if(A1=A,7,if(A1=AB,6,if(.....)))))))分别对应(记得按F4改为绝对引用,我这里就不写了)
A B BC C C分别为A10~E10,那下面的A11~E11可以写可以把上面的对应函数抄上来,也做一个对应表
现在使用min函数查找A11~E11,并使用上面的对应函数(反过来)输出A~D
只能想到这样的办法了……
Excel应该有直接把某种符号定义为数字的功能,我能力不足,只能想到一一对应的笨办法了。
A~D分别定义为7、6、5、4、3、2、1,那下面的单元格可以写一个对应函数if(A1=A,7,if(A1=AB,6,if(.....)))))))分别对应(记得按F4改为绝对引用,我这里就不写了)
A B BC C C分别为A10~E10,那下面的A11~E11可以写可以把上面的对应函数抄上来,也做一个对应表
现在使用min函数查找A11~E11,并使用上面的对应函数(反过来)输出A~D
只能想到这样的办法了……
Excel应该有直接把某种符号定义为数字的功能,我能力不足,只能想到一一对应的笨办法了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯