Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为vba中的每个循环比较中创建的单元格引用中的值?_Vba_Excel_Sampling - Fatal编程技术网

如何为vba中的每个循环比较中创建的单元格引用中的值?

如何为vba中的每个循环比较中创建的单元格引用中的值?,vba,excel,sampling,Vba,Excel,Sampling,我试图根据单击(B列)中1的百分比,对banner_pos(E列)、device_type(O列)和device_conn_type(p列)中的每个唯一值组合的行进行采样 我想第147行的代码有问题 非常感谢快速帮助 代码如下: Sub uniq() 将tmp、tmp1、tmp2的尺寸设置为字符串 Dim banr()作为字符串 暗斑As射程 Dim devtype()作为字符串 Dim devtyperng As范围 Dim devcon()作为字符串 变暗灯罩组件范围 设置banrrng=

我试图根据单击(B列)中1的百分比,对banner_pos(E列)、device_type(O列)和device_conn_type(p列)中的每个唯一值组合的行进行采样

我想第147行的代码有问题

非常感谢快速帮助

代码如下:


Sub uniq()
将tmp、tmp1、tmp2的尺寸设置为字符串
Dim banr()作为字符串
暗斑As射程
Dim devtype()作为字符串
Dim devtyperng As范围
Dim devcon()作为字符串
变暗灯罩组件范围
设置banrrng=Range(“E2:E400”)'更改范围以包括所有单元格
对于BANRNG中的每个单元格
如果(单元格“”)和(仪表(tmp,单元格)=0),则
tmp=tmp&单元&“|”
如果结束
下一个细胞
如果Len(tmp)>0,则tmp=Left(tmp,Len(tmp)-1)
banr=拆分(tmp,“|”)
'对于i=LBound(banr)到UBound(banr)
'txt=txt&banr(i)&vbCrLf
“接下来我
'MsgBox txt
'*****************************************************************************
'设备类型范围
设置devtyperng=Range(“O2:O400”)'更改范围以包括所有单元格
对于devtyperng中的每个单元格
如果(单元格“”)和(仪表(tmp1,单元格)=0),则
tmp1=tmp1&单元&“|”
如果结束
下一个细胞
如果Len(tmp1)>0,则tmp1=左(tmp1,Len(tmp1)-1)
devtype=Split(tmp1,“|”)
'对于i=LBound(devtype)到UBound(devtype)
'MsgBox devtype(i)
“接下来我
'*****************************************************************************
'设备连接范围
设置devconrng=Range(“P2:P400”)'更改范围以包括所有单元格
对于devconrng中的每个单元格
如果(单元格“”)和(仪表(tmp2,单元格)=0),则
tmp2=tmp2&单元&“|”
如果结束
下一个细胞
如果Len(tmp2)>0,则tmp2=左(tmp2,Len(tmp2)-1)
devcon=Split(tmp2,“|”)
'对于i=LBound(devcon)到UBound(devcon)
“MsgBox devcon(一)
“接下来我
'**********************************************************************************888888
“计算点击次数
变暗clkcntR As范围
设置clkcntR=范围(“B2:B400”)
将clkcnt变为单个
clkcnt=Application.CountIf(clkcntR,1)
MsgBox(clkcnt)
'跨横幅、devicetype和deviceconnection定义计数数组
'获取计数数组大小
如果任何错误将类型更改为long,则将Dim cntArrSiz设置为整数
cntArrSiz=1
cntArrSiz=cntArrSiz*(Application.CountA(banr))
cntArrSiz=cntArrSiz*(Application.CountA(devtype))
cntArrSiz=cntArrSiz*(Application.CountA(devcon))
MsgBox(cntArrSiz)
如果任何错误将类型更改为long,则Dim cntArr()为Single
ReDim cntArr(cntArrSiz)
Dim PropArr()为单个“如果有错误,请将类型更改为长”
ReDim PropArr(cntArrSiz)
Dim PercArr(),sampSize,rndSize为整数
ReDim PercArr(cntArrSiz)
sampSize=25
rndSize=400
如果任何错误将类型更改为long,则Dim loopCount为Integer
循环计数=1
对于banr中的每个单元格1
对于devtype中的每个cell2
对于devcon中的每个单元3
cntArr(loopCount)=Application.CountIfs(clkcntR,1,banrrng,cell1,devtyperng,cell2,devconrng,cell3)
'MsgBox“cntarr”&cntarr(循环计数)
PropArr(loopCount)=舍入((cntArr(loopCount)/clkcnt),2)
'MsgBox“PropArr”&PropArr(循环计数)
PercArr(loopCount)=四舍五入((PropArr(loopCount)*采样),0)
“MsgBox”PercArr:“&PercArr(循环计数)
loopCount=loopCount+1
下一个
下一个
下一个
“随机”初始化随机数种子
Dim MyRows()作为整数声明动态数组。
Dim numRows、percRows、nxtRow、nxtRnd、chkRnd、copyRow、percCount作为整数
percCount=1
重拨MyRows(sampSize)
'创建随机数并填充数组
将storeRow设置为整数
storeRow=1
暗视范围
Dim cellref作为字符串
设置EVIRNG=范围(“B2:P400”)
对于banr中的每个单元格1
对于devtype中的每个cell2
对于devcon中的每个单元3
对于nxtRow=1到PercArr(percCount)
getNew:
'生成随机数
nxtRnd=CInt(Int((rndSize*Rnd())+1))
'MsgBox“下一个随机数”&nxtRnd
'循环遍历数组,检查重复项
'对于chkRnd=1到storeRow
'如果发现重复项,则获取新编号
如果MyRows(chkRnd)=1,则转到getNew
cellref=格式(evirng.Cells(nxtRnd,5))
如果StrComp(cell1,cellref)为0,则转到getNew'****************这就是错误所在的位置*********************************************************8
”“接着呢
'如果随机数是唯一的,则添加元素
MyRows(storeRow)=nxtRnd
storeRow=storeRow+1
下一个
percCount=percCount+1
下一个
下一个
下一个
storeRow=storeRow-1
'循环通过数组,将行复制到Sheet2
对于copyRow=1到storeRow
工作表(“train”).Rows(MyRows(copyRow)).EntireRow.Copy_
目标:=工作表(“表1”)。单元格(复制行,1)
下一个
结束“子”代码直到采样

我怀疑您的一个单元格有一个错误,例如#NUM!在里面。使用以下两行进行更换:

cellref = Format(evilRng.Cells(nxtRnd, 5))
If StrComp(cell1, cellref) <> 0 Then GoTo getNew
cellref=格式(evirng.Cells(nxtRnd,5))
如果StrComp(cell1,cellref)为0,则转到getNew
以下几行:

cellref = CStr(evilRng.Cells(nxtRnd, 5))
If StrComp(CStr(cell1.Value), cellref) <> 0 Then GoTo getNew
cellref=CStr(邪恶细胞(nxtRnd,5))
如果StrComp(CStr(cell1.Value)、cellref)为0,则转到getNew

您收到了什么错误消息?
cellref = CStr(evilRng.Cells(nxtRnd, 5))
If StrComp(CStr(cell1.Value), cellref) <> 0 Then GoTo getNew