Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2332|回复: 4

[已解决]急公式 数值0-9 任意三位数字组合相加等于20.。。。。

[复制链接]
发表于 2016-11-10 11:24 | 显示全部楼层 |阅读模式
比如a1:20  b2: 0256789    c3:三位数字组合相加 d3:三位数字组合相加 e3:三位数字组合相加f3:三位数字组合相加g3:三位数字组合相加
a1:20           b2: 0256789      c3:578   5+7+8=20这样的         
效果
a1:20           b2: 0256789      c3:578    f3:569    直接把b2里面数据等于20的组合出来
最佳答案
2016-11-10 21:08
  1. Function GetRight(s, x, n)  's为和,X为字符串,n为第几个
  2.     Dim arr(1 To 10)
  3.     For i = 1 To Len(x) - 1
  4.         x1 = Mid(x, i, 1)
  5.         For j = i + 1 To Len(x)
  6.             x2 = Mid(x, j, 1)
  7.             x3 = s - x1 - x2
  8.             If InStr(Mid(x, j + 1), x3) Then
  9.                 p = p + 1
  10.                 arr(p) = x1 & x2 & x3
  11.             End If
  12.         Next
  13.     Next
  14.     GetRight = arr(n)
  15.     If GetRight = 0 Then GetRight = ""
  16. End Function

复制代码

123.zip

6.88 KB, 下载次数: 7

发表于 2016-11-10 15:46 | 显示全部楼层
如图 QQ截图20161110154350.jpg
D1
  1. =IFERROR(TEXT(SMALL(IF(MMULT(--MID(TEXT(SMALL(IF(TRANSPOSE(--MID($C1,ROW($1:$7),1))>MOD(SMALL(IF(--MID($C1,ROW($1:$7),1)<TRANSPOSE(--MID($C1,ROW($1:$7),1)),--MID($C1,ROW($1:$7),1)*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,2)))),10),SMALL(IF(--MID($C1,ROW($1:$7),1)<TRANSPOSE(--MID($C1,ROW($1:$7),1)),--MID($C1,ROW($1:$7),1)*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,2))))*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,3)))),"000"),{1,2,3},1),{1;1;1})=$B1,SMALL(IF(TRANSPOSE(--MID($C1,ROW($1:$7),1))>MOD(SMALL(IF(--MID($C1,ROW($1:$7),1)<TRANSPOSE(--MID($C1,ROW($1:$7),1)),--MID($C1,ROW($1:$7),1)*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,2)))),10),SMALL(IF(--MID($C1,ROW($1:$7),1)<TRANSPOSE(--MID($C1,ROW($1:$7),1)),--MID($C1,ROW($1:$7),1)*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,2))))*10+TRANSPOSE(--MID($C1,ROW($1:$7),1))),ROW(INDIRECT("1:"&COMBIN(7,3))))),COLUMN(A1)),"000"),"")
复制代码

三键横拉下拉即可
堆出来的公式,惭愧
优化空间很大,
回复

使用道具 举报

发表于 2016-11-10 15:49 | 显示全部楼层
123.rar (8.76 KB, 下载次数: 6)

评分

参与人数 1 +3 收起 理由
苏子龙 + 3 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2016-11-10 21:08 | 显示全部楼层    本楼为最佳答案   
  1. Function GetRight(s, x, n)  's为和,X为字符串,n为第几个
  2.     Dim arr(1 To 10)
  3.     For i = 1 To Len(x) - 1
  4.         x1 = Mid(x, i, 1)
  5.         For j = i + 1 To Len(x)
  6.             x2 = Mid(x, j, 1)
  7.             x3 = s - x1 - x2
  8.             If InStr(Mid(x, j + 1), x3) Then
  9.                 p = p + 1
  10.                 arr(p) = x1 & x2 & x3
  11.             End If
  12.         Next
  13.     Next
  14.     GetRight = arr(n)
  15.     If GetRight = 0 Then GetRight = ""
  16. End Function

复制代码

123..rar

14.64 KB, 下载次数: 6

评分

参与人数 1 +3 收起 理由
苏子龙 + 3 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-11-11 09:29 | 显示全部楼层
tgydslr 发表于 2016-11-10 15:46
如图
D1
三键横拉下拉即可

哈哈,你们都是对的,非常感谢!公式在少点更加好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 14:03 , Processed in 0.325456 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表