VBA Excel如何从指定列获取随机单元格的实际值
VBA代码调整方案
现有代码存在两处问题:
WorksheetFunction.RandBetween本身的返回值是指定区间内的随机整数,你直接将该返回值赋值给卡片变量,拿到的自然是随机行号而非单元格值RandBetween的第一个参数传参错误,你需要从第1行到最后数据行之间取随机行号,下界应为1而非A1
调整后的可运行代码如下:
Dim ws As Sheet1 ' 绑定工作表,避免多表切换时单元格引用出错 Set ws = ThisWorkbook.Worksheets("Sheet1") ' 括号内替换为你的实际工作表名称 ' 分别获取A列、B列最后一行有数据的行号 P1LR = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row P2LR = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row ' 生成对应列的随机行号 RandomP1Row = WorksheetFunction.RandBetween(1, P1LR) RandomP2Row = WorksheetFunction.RandBetween(1, P2LR) ' 用随机行号读取对应单元格的实际存储值 P1Cards = ws.Cells(RandomP1Row, 1).Value P2Cards = ws.Cells(RandomP2Row, 2).Value
如果你想简化代码减少变量,也可以直接合并写法一步拿到值:
P1Cards = ws.Cells(WorksheetFunction.RandBetween(1, P1LR), 1).Value P2Cards = ws.Cells(WorksheetFunction.RandBetween(1, P2LR), 2).Value
内容的提问来源于stack exchange,提问作者user58518
相关产品推荐
相关产品推荐

