如何用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格内产生不重复的四位随机数的。你下载执行看看。

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网