写一段VBA代码,生成随机表14行,14列。每行为1到14的数字,每个数字每行只能出现一次。每列为1到14的数字,每个数字每行列只能出现一次。
时间: 2023-03-10 07:43:01 浏览: 106
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代码,生成随机表,34列,一半为“左”,一半为“右”
### 回答1:
Sub GenerateRandomTable()
'定义变量
Dim i As Integer
Dim Table As Object
'创建一个新表
Set Table = CreateObject("Scripting.Dictionary")
'循环遍历34列
For i = 1 To 34
'对于偶数列,生成“左”
If i Mod 2 = 0 Then
Table(i) = "左"
Else
'对于奇数列,生成“右”
Table(i) = "右"
End If
Next
'显示结果
MsgBox Table.items
End Sub
### 回答2:
以下是一段用VBA代码生成随机表的示例代码:
Sub 生成随机表()
Dim ws As Worksheet
Dim rowCount As Integer
Dim colCount As Integer
Dim i As Integer
Dim j As Integer
' 指定生成随机表的工作表
Set ws = ThisWorkbook.ActiveSheet
' 指定行数和列数
rowCount = 10
colCount = 34
' 循环遍历每一行和列
For i = 1 To rowCount
For j = 1 To colCount
' 生成随机数,取值为1或2
Dim randomValue As Integer
randomValue = Int((2 - 1 + 1) * Rnd + 1)
' 根据随机数的值,设置单元格的值为“左”或“右”
If randomValue = 1 Then
ws.Cells(i, j).Value = "左"
Else
ws.Cells(i, j).Value = "右"
End If
Next j
Next i
End Sub
这段代码使用了两个嵌套的循环来遍历每一行和列。在每个单元格中,生成一个随机数,然后根据这个随机数的值将单元格的值设置为“左”或“右”。最终,随机表将在指定的工作表上被生成,共有34列,每列一半为“左”,一半为“右”。你可以根据需要修改代码中的行数和列数来生成指定行数和列数的随机表。
### 回答3:
Sub GenerateRandomTable()
Dim rng As Range
Dim cell As Range
Dim i As Integer
'设置随机数种子
Randomize
'定义表格初始范围
Set rng = Range("A1:AH34")
'清除原有内容
rng.ClearContents
'生成随机表
For Each cell In rng
'确定每一列的位置
i = cell.Column
'根据列数判断左右并填充内容
If i <= 17 Then
cell.Value = "左"
Else
cell.Value = "右"
End If
Next cell
End Sub
以上VBA代码用于生成一个随机表,共34列。其中,前17列为“左”,后17列为“右”。通过使用Randomize函数设置随机数种子,对范围内的每一个单元格进行遍历操作,根据每一列的位置进行判断并填充相应内容。最终生成的随机表被填充满34列(A列到AH列),共34行(1行到34行)。
阅读全文