VBA-excel双循环条件

我目前在Excel VBA工作,虽然我的编程是非常可怕的。 我想执行以下function。 我有2个范围的数据:

一个范围(a1:a10)是指需要对其他范围进行检查的variables(b1:b250)。 variables检查的条件应该是,如果variables比(b1:b250)范围内的值小(<),则应该吐出variables,否则应该显示为“0”。

因此a = 1到10应检查b = 1到250的所有值,就好像循环应该运行2500次,以确保范围(a1:a10)中的所有值都已针对范围(b1:b250)进行检查。 请让我知道,如果你可以帮助或其他信息是必要的。

你可以做到这一点没有任何循环。 一个SQL查询适合你。 这是你如何做到这一点。

Sub tadaaa() Dim con As Object, rs As Object Dim query As String, query1 As String Dim connector As String Dim address As String Dim sht As Worksheet Set sht = Sheets("Sheet1") Set con = CreateObject("adodb.connection") Set rs = CreateObject("adodb.recordset") address = ThisWorkbook.FullName connector = "provider=microsoft.ace.oledb.12.0;data source=" & _ address & ";extended properties=""Excel 12.0 Macro;hdr=yes""" con.Open connector query = "select Defender from [sheet1$] where Defender < " 'Source sheet For i = 2 To sht.Range("b" & Rows.Count).End(xlUp).Row query1 = query & sht.Cells(i, 2).Value Set rs = con.Execute(query1) 'Execute the query 'Recording query results to any sheet you want. sht.Cells(6500, 2 * i).End(3).Offset(1, 0).CopyFromRecordset rs sht.Cells(1, 2 * i).Value = rs.Fields(0).Name & " vs A" & i Set rs = Nothing query1 = Empty Next Set con = Nothing End Sub 

这是我的初始表。 您的B值在A列中,A值在B列中。 在这里输入图像说明

这是后vba代码。

在这里输入图像说明

谢谢阿里SMperformance出一个优秀,但不太知名的方式! 在阿里之前,我会提出一个更无环路的方法:

 Sub WithoutLoop() Range("E1").FormulaR1C1 = "=""Vs Examiner ""&OFFSET(R2C2,COLUMN()-5,0)" Range("E2").FormulaR1C1 = "=IF(OFFSET(R2C2,COLUMN()-5,0)<RC4,OFFSET(R2C2,COLUMN()-5,0),0)" Range("E1").Copy Range("E1", Range("E1").Offset(0, 9)).PasteSpecial xlPasteFormulas Range("E2").Copy Range("E2", Range("E2").Offset(2500, 9)).PasteSpecial xlPasteFormulas End Sub 

macros观之前:

在这里输入图像说明

macros后:

在这里输入图像说明