求一个vba代码,在0--9的十个数字中,排列出含有某个数字(比如1)的所有三0到9六位数排列组合表,不要重复(比如11X)

查看: 2115|回复: 8
[求助] 怎么用VBA从数字0到9中,任选3个数排列成5位数
阅读权限10
在线时间 小时
用VBA排列。从数字0到9中,任意选3个数(可选定),排列成5位数。排列的每组数字,放在一个格里,请编程,并且有图标,可选择。
例如,从数字0到9中随便选取3个数字0、1、5。排列成7位数,数字可重复:0、1、01105、.........等等。
阅读权限90
在线时间 小时
取0~99999的随机数即可
阅读权限95
在线时间 小时
从数字0到9中,任意选3个数(可选定)& &&&120种组合
3个数字。排列成5位数,每个数至少用一次,& &6种组合
5 位数&&全排列&&3125种
阅读权限10
在线时间 小时
顶。。。。。。。
我这里有排列7位的代码,请高手帮我修改从0-9任选3个数字排列5位的代码,
用VBA排列。从数字0到9中,任意选4个数或5个数、6个数、7个数(可选定),排列成7位数。排列的每组数字,放在一个格里。请编程。不仅仅是任意的5个数,而且是任意的4个数或5个数、6个数、7个数。并且有图标,可选择。
例如,从数字0到9中随便选取5个数字0、1、5、8、9。排列成7位数,数字可重复:19、08、0108589..........等等。或任意选取4个数,如:2、3、6、8.排成7位数,68、3268688.。。。。等等。
Range(&i1:o65536&).ClearContents
For Each c In [a1:g1]
If c && && And WorksheetFunction.Match(c, [a1:g1], 0) = s + 1 Then
If Len(x) & 4 Then MsgBox &设置数据太少,已结束程序&: Exit Sub
ReDim arr1(0 To 60000, 1 To 7)
For j = 0 To 9999999
For i = 1 To Len(x)
w = 7 - Len(Replace(Format(j, &0000000&), Mid(x, i, 1), &&))
If w = 0 Or w = 7 Then GoTo qq:
If y && 7 Then GoTo qq:
arr1(t, 1) = Mid(Format(j, &0000000&), 1, 1)
arr1(t, 2) = Mid(Format(j, &0000000&), 2, 1)
arr1(t, 3) = Mid(Format(j, &0000000&), 3, 1)
arr1(t, 4) = Mid(Format(j, &0000000&), 4, 1)
arr1(t, 5) = Mid(Format(j, &0000000&), 5, 1)
arr1(t, 6) = Mid(Format(j, &0000000&), 6, 1)
arr1(t, 7) = Mid(Format(j, &0000000&), 7, 1)
[i2].Resize(t, 7) = arr1
(11.53 KB, 下载次数: 29)
15:46 上传
点击文件名下载附件
阅读权限10
在线时间 小时
& & & & & & & &
顶。。。。。。。
我这里有排列7位的代码,请高手帮我修改从0-9任选3个数字排列5位的代码,
请高手帮我修改从0-9任选3个数字排列5位的代码,
请高手帮我修改从0-9任选3个数字排列5位的代码,
阅读权限10
在线时间 小时
yjh_27 发表于
从数字0到9中,任意选3个数(可选定)& &&&120种组合
3个数字。排列成5位数,每个数至少用一次,& &6种组 ...
顶。。。。。。。
我这里有排列7位的代码,请高手帮我修改从0-9任选3个数字排列5位的代码,
用VBA排列。从数字0到9中,任意选4个数或5个数、6个数、7个数(可选定),排列成7位数。排列的每组数字,放在一个格里。请编程。不仅仅是任意的5个数,而且是任意的4个数或5个数、6个数、7个数。并且有图标,可选择。
例如,从数字0到9中随便选取5个数字0、1、5、8、9。排列成7位数,数字可重复:19、08、0108589..........等等。或任意选取4个数,如:2、3、6、8.排成7位数,68、3268688.。。。。等等。
Range(&i1:o65536&).ClearContents
For Each c In [a1:g1]
If c && && And WorksheetFunction.Match(c, [a1:g1], 0) = s + 1 Then
If Len(x) & 4 Then MsgBox &设置数据太少,已结束程序&: Exit Sub
ReDim arr1(0 To 60000, 1 To 7)
For j = 0 To 9999999
For i = 1 To Len(x)
w = 7 - Len(Replace(Format(j, &0000000&), Mid(x, i, 1), &&))
If w = 0 Or w = 7 Then GoTo qq:
If y && 7 Then GoTo qq:
arr1(t, 1) = Mid(Format(j, &0000000&), 1, 1)
arr1(t, 2) = Mid(Format(j, &0000000&), 2, 1)
arr1(t, 3) = Mid(Format(j, &0000000&), 3, 1)
arr1(t, 4) = Mid(Format(j, &0000000&), 4, 1)
arr1(t, 5) = Mid(Format(j, &0000000&), 5, 1)
arr1(t, 6) = Mid(Format(j, &0000000&), 6, 1)
arr1(t, 7) = Mid(Format(j, &0000000&), 7, 1)
[i2].Resize(t, 7) = arr1
阅读权限95
在线时间 小时
& & & & & & & &
本帖最后由 yjh_27 于
16:59 编辑
少改了一处
Range(&i1:o65536&).ClearContents
For Each c In [a1:g1]
If c && && And WorksheetFunction.Match(c, [a1:g1], 0) = s + 1 Then
If Len(x) & 4 Then MsgBox &设置数据太少,已结束程序&: Exit Sub
ReDim arr1(0 To 60000, 1 To 5)
For j = 0 To 99999'99
For i = 1 To Len(x)
w = 5 - Len(Replace(Format(j, &00000&), Mid(x, i, 1), &&))
If w = 0 Or w = 5 Then GoTo qq:
If y && 5 Then GoTo qq:
arr1(t, 1) = Mid(Format(j, &<font color="#ff&), 1, 1)
arr1(t, 2) = Mid(Format(j, &00000&), 2, 1)
arr1(t, 3) = Mid(Format(j, &00000&), 3, 1)
arr1(t, 4) = Mid(Format(j, &00000&), 4, 1)
arr1(t, 5) = Mid(Format(j, &00000&), 5, 1)
'arr1(t, 6) = Mid(Format(j, &0000000&), 6, 1)& &&&'此句注释
'arr1(t, 7) = Mid(Format(j, &0000000&), 7, 1)& &&&'此句注释
[i2].Resize(t, 5) = arr1
阅读权限10
在线时间 小时
yjh_27 发表于
顶。。。。。。。
运行 你修改的代码& &电子表格报错“400”
阅读权限95
在线时间 小时
xcmxcm 发表于
顶。。。。。。。
运行 你修改的代码& &电子表格报错“400”
参见7L更正
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师0-9 十个数字 排列组合成任意的三个数字_excel函数吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:5,205贴子:
0-9 十个数字 排列组合成任意的三个数字
0-9十个数字 从000 到999 一共1000个当我在A1 B1 C1输入任意两个或者是三个数字 ,就可以在A2:A11 这个区域显示包含这两个数字的任意三位数比如我输入了在A1输入了4 B1输入了5 C1输入了3,那组合排列出来的数字就应该是至少包含3 4 5 其中一个数字的三位数看了一个公式,但下面的这个公式对于有重复号存在的数字 好像不行 比如说040 033 =INDEX(TEXT(ROW($1:$999),&000&),SMALL(IF((N(LEN(SUBSTITUTE(TEXT(ROW($1:$999),&000&),{0,1,2,3,4,5,6,7,8,9},&&))&=2),ROW($1:$10)^0)=10,ROW($1:$999)),ROW(1:1)))求高手解答
超实用床垫选择技巧,帮您实现优质睡眠!
看不懂那么复杂的公式
但是可以这么设置 =A1&B1&C1&& &&A1&C1&B1&& &&B1&A1&C1&& &&B1&C1&A1&& &&C1&A1&B1&& &&C1&B1&A1
需要一个排列组合算法
贴吧热议榜
使用签名档&&
保存至快速回贴2168人阅读
C#数据结构+算法(18)
此题咱没想出很巧妙的解法,直接根据编程来吧
using System.Collections.G
using System.T
namespace RemainerMaths
class Program
static void Main(string[] args)
int count = 0;//可能性个数
int[] a ={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int i = 0; i & a.L i++)
for (int j = 0; j & a.L j++)
for (int k = 0; k & a.L k++)
if (a[i] != a[j] && a[j] != a[k] && a[k] != a[i])
//从9个数中随机找出3个数组成三位数
int add1 = 100 * a[i] + 10 * a[j] + a[k];
//将剩下的6个数字组成一个数组
int[] b = GetNewArray(a, i, j, k);
for (int x = 0; x & b.L x++)
for (int y = 0; y & b.L y++)
for (int z = 0; z & b.L z++)
if (b[x] != b[y] && b[y] != b[z] && b[z] != b[x])
//从这6个数中随机找出3个数组成三位数
int add2 = 100 * b[x] + 10 * b[y] + b[z];
//将剩下的3个数字组成一个数组
int[] c = GetNewArray(b, x, y, z);
//获得最后剩下的3个数字组成的所有三位数
int[] lastNumber = GetAllThreeNumber(c);
//如果两数之和等于第三个数就输出
for (int index = 0; index & lastNumber.L index++)
if (add1 + add2 == lastNumber[index])
Console.WriteLine(&{0} + {1} = {2}&, add1, add2, lastNumber[index]);
Console.WriteLine(&共有[{0}]种情形-因加法存在交换律,则实际有[{1}]种情形。&, count, count/2);
Console.ReadLine();
/// &summary&
/// 由原数组,去除掉索引在i、j、k处的元素后形成的新数组
/// &/summary&
/// &param name=&a&&&/param&
/// &param name=&i&&&/param&
/// &param name=&j&&&/param&
/// &param name=&k&&&/param&
/// &returns&&/returns&
static int[] GetNewArray(int[] a, int i, int j, int k)
List&int& list = new List&int&();
for (int temp = 0; temp & a.L temp++)
if (temp != i && temp != j && temp != k)
list.Add(a[temp]);
int[] b = list.ToArray();
/// &summary&
/// 获得由最后三个数字组成的所有三位数
/// &/summary&
/// &param name=&list&&&/param&
/// &returns&&/returns&
static int[] GetAllThreeNumber(int[] list)
List&int& temp = new List&int&();
if (list == null || list.Length != 3)
return temp.ToArray();
temp.Add(100 * list[0] + 10 * list[1] + list[2]);
temp.Add(100 * list[0] + 10 * list[2] + list[1]);
temp.Add(100 * list[1] + 10 * list[0] + list[2]);
temp.Add(100 * list[1] + 10 * list[2] + list[0]);
temp.Add(100 * list[2] + 10 * list[0] + list[1]);
temp.Add(100 * list[2] + 10 * list[1] + list[0]);
return temp.ToArray();
输出结果:
。。。。。。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:37549次
积分:1030
积分:1030
排名:千里之外
原创:66篇
评论:14条
(10)(6)(3)(20)(1)(18)(16)

我要回帖

更多关于 0到9三位数排列组合 的文章

 

随机推荐