写一段VBA代码,生成随机表14行,14列。每行为1到14的数字,每个数字每行只能出现一次。每列为1到14的数字,每个数字每行列只能出现一次。
时间: 2023-03-10 16:43:01 浏览: 64
Sub RandomTable()
Dim i As Integer, j As Integer
Dim arr As Variant
arr = Range("A1:N14")
For i = 1 To 14
For j = 1 To 14
Do
arr(i, j) = Int(14 * Rnd + 1)
Loop Until Application.CountIf(Range(Cells(i, j), Cells(i, j)), arr(i, j)) = 1 And _
Application.CountIf(Range(Cells(i, 1), Cells(i, 14)), arr(i, j)) = 1 And _
Application.CountIf(Range(Cells(1, j), Cells(14, j)), arr(i, j)) = 1
Next j
Next i
Range("A1:N14") = arr
End Sub
相关问题
写一段VBA代码,生成随机表14行,14列 每行与每列数字都是1到14的数字只出现一次
### 回答1:
Sub 随机表14()
Dim S(), A(), N As Integer
N = 14
ReDim S(N, N)
ReDim A(N)For i = 1 To N
A(i) = i
NextFor i = 1 To N
For j = 1 To N
Randomize
N = Int((N - 1 + 1) * Rnd + 1)
S(i, j) = A(N)
A(N) = A(N - 1)
N = N - 1
Next
NextFor i = 1 To N
For j = 1 To N
Cells(i, j) = S(i, j)
Next
NextEnd Sub
### 回答2:
以下是使用VBA语言编写的代码,可以生成一个14行14列的随机表格,其中每一行和每一列的数字都是1到14的数字且只出现一次:
```vba
Sub GenerateRandomTable()
Dim arr(1 To 14, 1 To 14) As Integer ' 定义一个14行14列的整数数组
Dim i As Integer, j As Integer
Dim num As Integer
' 初始化数组
For i = 1 To 14
For j = 1 To 14
arr(i, j) = 0
Next j
Next i
' 生成随机表格
For i = 1 To 14
For j = 1 To 14
Do
num = Int((14 * Rnd) + 1) ' 生成1到14的随机整数
Loop Until arr(i, num) = 0 ' 检查该数字是否已经出现过
arr(i, num) = j ' 将数字赋值给表格
Next j
Next i
' 输出随机表格
For i = 1 To 14
For j = 1 To 14
Cells(i, j).Value = arr(i, j)
Next j
Next i
End Sub
```
请将以上代码复制到一个新的VBA模块中,然后运行`GenerateRandomTable`子过程,即可在Excel表格中生成一个满足要求的随机表格。
### 回答3:
下面是一段可以生成随机表格的VBA代码:
```vba
Sub GenerateRandomTable()
Dim tableArr(1 To 14, 1 To 14) As Integer
Dim rowArr(1 To 14) As Integer
Dim colArr(1 To 14) As Integer
Dim i As Integer, j As Integer, k As Integer
' 初始化行数组和列数组
For i = 1 To 14
rowArr(i) = i
colArr(i) = i
Next i
' 生成随机表格
For i = 1 To 14
For j = 1 To 14
k = Int((15 - j) * Rnd + 1) ' 随机生成1到15-j的整数
tableArr(i, j) = colArr(k)
' 调整列数组
For k = k To 13
colArr(k) = colArr(k + 1)
Next k
Next j
' 调整行数组
For k = i To 13
rowArr(k) = rowArr(k + 1)
Next k
Next i
' 输出随机表格到工作表
For i = 1 To 14
For j = 1 To 14
Cells(i, j) = tableArr(i, j)
Next j
Next i
End Sub
```
这段VBA代码使用了一个二维数组`tableArr`来存储随机生成的表格。同时,使用两个一维数组`rowArr`和`colArr`分别存储行和列数字的备选项。在生成随机表格的过程中,随机选择一列数字,并移除对应的备选项。最后,将生成的随机表格输出到工作表中的14行14列。
写一个vba代码,给Excel的工作表第一列,随机生成100个35.0到40.0的随机数字。
### 回答1:
以下是 VBA 代码,可以在 Excel 中使用它来生成随机数字:
```
Sub RandomNumbers()
Dim i As Integer
For i = 1 To 100
Cells(i, 1).Value = Rnd() * (40 - 35) + 35
Next i
End Sub
```
这段代码将会在 Excel 的工作表的第一列中生成 100 个 35.0 到 40.0 之间的随机数字。
要使用这段代码,请打开 Excel 并进入 Visual Basic 编辑器(可以在“开发工具”选项卡中找到)。然后,将代码粘贴到编辑器中,并在 Excel 中运行它。
### 回答2:
可以使用以下VBA代码来实现给Excel工作表的第一列随机生成100个35.0到40.0的随机数字:
```vba
Sub GenerateRandomNumbers()
Dim ws As Worksheet
Dim i As Integer
Set ws = ThisWorkbook.Worksheets("Sheet1") '将"Sheet1"替换为实际的工作表名称
For i = 1 To 100
ws.Cells(i, 1).Value = WorksheetFunction.RandBetween(350, 400) / 10
Next i
End Sub
```
在VBA编辑器中新建一个模块,将上述代码粘贴到模块中。确保替换代码中的"Sheet1"为要操作的工作表名称。代码的逻辑是使用`For`循环,从1到100,在工作表的第一列的每一行生成一个随机数。`WorksheetFunction.RandBetween(350, 400)`函数用于生成一个介于350和400之间的随机整数,然后除以10,将其转换为浮点数并存储在工作表的相应单元格中。
执行代码后,你将在工作表的第一列看到100个35.0到40.0之间的随机数字。
### 回答3:
Sub GenerateRandomNumbers()
Dim rng As Range
Dim cell As Range
Dim i As Integer
Dim num As Double
' 清空工作表第一列数据
Sheets("Sheet1").Range("A:A").ClearContents
' 定义要生成随机数的范围
Dim minNum As Double
Dim maxNum As Double
minNum = 35.0
maxNum = 40.0
' 设置随机数生成器
Randomize
' 循环生成100个随机数
Set rng = Sheets("Sheet1").Range("A1:A100")
i = 0
For Each cell In rng
' 生成随机数并将其赋值给单元格
num = (maxNum - minNum) * Rnd + minNum
cell.Value = num
i = i + 1
' 检查生成的随机数个数,如果已达到100个则退出循环
If i = 100 Then
Exit For
End If
Next cell
' 提示生成完成
MsgBox "随机数生成完毕!"
End Sub
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)