如何用EXCEL或VBA 解决一个难题,高手请进!

如图:

我想用一个公式在 B,C,D,E,F,.......很多列。。。用 0——9 这10个数字每一列里随机生成一个四位数,但要注意这四个数不能重复而且 数值前边可以含有0,然后对照A列里的 第一个数值,,如果有就在B ,C,D,E,F,G用“有”表示出来,如果没有就用“无”表示出来,,特别注意在A列里的五位数,头前第一个数值是可以有 0 的 比如A2里数数值是 21152 第一位是 2 用 B1是 0154 没有2 就在B2里表示为“无”,,最后要是我想对照 第二或者第三,第四第五中的数值,公式应该怎么去改??完全生手,,请大侠,高手们指教。。。先行谢过.....

第1个回答  推荐于2016-01-10

不用VBA,请在B2输入公式:

=IF(ISERR(FIND(MID($A2,COLUMN()-1,1),B$1)),"无","有")

向右拉填充,再向下拉填充即可。

追问

EXCEL公式似乎不计算前边有 0的 数值,,,有什么方法解决吗?还有 随机生成0——9的四位数值公式,怎么使用?

追答

产生随机四位数:
=TEXT(INT(RAND()*1000),"0000")

追问

这些四位数是不能成立的呢???这个公式能 改下吗?

追答

下面是一个VBA程序:在 B,C,D,E,F,.......很多列。。。用  0——9 这10个数字每一列里随机生成一个四位数,但要注意这四个数不能重复而且 数值前边可以含有0。

Public m_txt As String

Sub Macro1()
Dim i As Integer
For i = 2 To 6     '6是F列,你可改
Call M_text
    Cells(1, i) = m_txt
    Cells(1, i).NumberFormat = "0000"
Next
End Sub

Sub M_text()
Dim a As Integer, b As Integer, c As Integer, d As Integer
Randomize
a = Int(Rnd * 10)
b = Int(Rnd * 10)
c = Int(Rnd * 10)
d = Int(Rnd * 10)
Do While a = b
    b = Int(Rnd * 10)
Loop
Do While a = c Or c = b
    c = Int(Rnd * 10)
Loop
Do While a = d Or d = c Or d = b
    d = Int(Rnd * 10)
Loop
m_txt = a & b & c & d
End Sub

 

追问

朋友,非常感谢你的回答,,我还想问你: 如果随机生成的 这些四位数 不能重复:公式能改下吗?前边的追问打错字了, 抱歉

追答

上面的程序就是在B1:F1格内产生不重复的四位随机数的。你下载执行看看。

本回答被提问者和网友采纳

EXCEL高手请进,需要VBA编程,筛选重复数据并显示统计数量以及显示下一行...
If .Cells(i, 1) = [b1] Then Cells(n, 1) = .Cells(i, 1)Cells(n, 2) = .Cells(i, 2)Cells(n, 3) = .Cells(i, 3)Cells(n, 4) = .Cells(i + 1, 1)Cells(n, 5) = .Cells(i + 1, 2)Cells(n, 6) = .Cells(i + 1, 3)n = n + 1 For j = i + 1 ...

excel难题,高手请进
1题:=SUM(LEN(B1:B12))-SUM(LEN(IF(LEFT(B1:B12,4)="〖1次〗",SUBSTITUTE(B1:B12,"F",""),B1:B12&"")))数组公式,按CTRL+SHIFT+ENTER结束。结果为2 简化一下:=SUM((LEFT(B1:B12,4)="〖1次〗")*(SUBSTITUTE(B1:B12,"F","")<>B1:B12))2题:=SUM(--TEXT(MID(SUBSTITUTE...

EXCEL问题,高手请进!
②在工作表中,选中所有数据,格式>条件格式,公式输入=row(abcd)=row(),然后点格式,图案里选一颜色,确定即可.

Excel中,如何用VBA来执行以下功能,高手请进,若能完美运行,我将增加100...
首先是K列值变动就会拷贝上一行数据,当然ID号是递增的。K列一次粘贴多个数据也OK 之后客户名改变即改变C列改变时,这时会自动增加订单号。订单号格式可以任意,我用的是自动增加序列号,其他地方请手动更改。Private Sub worksheet_change(ByVal Target As Range)If Target.Column = 11 Then '如果K...

excel表格VBA代码高手请进,帮我优化代码
1).Value = Now .NumberFormatLocal = "yyyy-m-d h:mm;@"End With End If Case Is = 3, 6 If Target.Value = "*" Then With Target.Offset(0, -1).Value = Now .NumberFormatLocal = "yyyy-m-d h:mm;@"End With End If End Select Application.EnableEvents = True End Sub ...

EXCEL高手请进,求VBA代码,统计关于单元格间隔的问题~
If Cells(j, 1) = i Then k = j Next Cells(i + 1, 3) = n - k Next End Sub 按 Alt + F11 回到 Excel 这时你可以按Alt + F8,选程序,在【选项】里设置一个热键,以后每次数据输入完后,按热键运行程序,就可得到你要的结果!!!还有一点大家觉得很奇怪,这样的问题,怎么没有...

EXCEL VBA高手请进,求自动计算公式~~
下面以H6的值“高度2*长度3”的结果填入I6为例,代码如下:Sub aa()Dim str As Stringstr = [H6]For i = Len(str) To 1 Step -1 If Asc(Mid(str, i, 1)) > 100 Or Asc(Mid(str, i, 1)) < 0 Then str = Application.WorksheetFunction.Replace(str, i, 1, "") En...

VBA高手请进!EXCEL自动排序问题!
这个程序只帮助你把序号写到608行,把程序里面608改为609就可以了。另外这个程序排序从第3行开始的,如果需要调整,你把所有的a3改为a1(比如你要从第一行排序)之所以,出现N\/A,是因为,[a3:a611] = [row(1:608)]中,a3:a611为609行,而[row(1:608)]为608行,所以,出了空,这一行就...

Excel高手请进,关于随机选取单元格填充的问题
你需要用VBA解决这问题 1、将所有组合列出,装入数组。2、随机抽取——与已抽取的项目比对,若不同,则返回值。

excel删除问题,高手请进
先选中这一区域,如果它在A1:A100,那么选中A1:A100 点数据--筛选--高级筛选 勾选上“将筛选结果复制到”在“复制到”中填上B1 最后勾上“选择不重复的记录”--确定即可

相似回答