|
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>以下是引用<i>飞雨飘</i>在2007-10-3 12:23:57的发言:</b><br/><p>发现此题居然没有人用常规双循环做,很是不解。我发一个吧。</p><p>Option Explicit</p><p>Sub 单条件()<br/>Dim i, j As Integer<br/>For i = 2 To Sheet2.Range("a65536").End(xlUp).Row<br/>Sheet2.Cells(i, 2).Clear<br/> For j = 2 To Sheet1.Range("a65536").End(xlUp).Row<br/> If Sheet1.Cells(j, 2) = Sheet2.Cells(i, 1) Then '多条件加个AND<br/> ' Sheet2.Cells(i, 2) = Sheet2.Cells(i, 2) + Sheet1.Cells(j, 3) '此为数量<br/> Sheet2.Cells(i, 2) = Sheet2.Cells(i, 2) + <font color="#ff0000"><strong>1</strong> </font> '此为个数<br/> End If<br/> Next<br/>Next<br/>End Sub</p></div><p>我运行了上面的程序结果不对!因跟我的程序类似,所以上面的这句 Sheet2.Cells(i, 2) = Sheet2.Cells(i, 2) + <font color="#ff0000"><strong>1</strong> (红色的)<strong>1</strong></font><font color="#000000">要改成 Sheet1.Cells(j, 3) 就可以了。</font> </p><p><font color="#000000">下面是我的“作业”:</font> </p><p>ublic Sub 单条件汇总1()<br/>Dim i As Integer, m As Integer, s As Integer, p As Integer <font color="#55aa66">'声明变量</font><br/> Application.ScreenUpdating = False<br/> Sheet1.Select <font color="#4db361">'选取Sheet1工作表</font><br/> s = [a65536].End(xlUp).Row <font color="#55aa77">'s为A列最的一个非空单元格的行数</font><br/> Sheet2.Select <font color="#55aa55">'选取Sheet2工作表</font><br/> m = [a65536].End(xlUp).Row <font color="#5ea25e">'m为(Sheet1工作表)A列最后一非空单元格的行数</font><br/> For p = 2 To m <font color="#5ea26b">'设置p从2到m的循环<br/></font> For i = 2 To s <font color="#55aa66">'设置i从2到s之间进行循环。</font><br/> If Cells(p, 1) = Sheet1.Cells(i, 2) Then <font color="#669966">'如果单元格Cells(p, 1)和Sheet1.Cells(i, 2)的值相等,</font><br/> Cells(p, 2) = Sheet1.Cells(i, 3) + Cells(p, 2) <font color="#669971">'则 Cells(p, 2)的值+Sheet1.Cells(i, 3)的值<br/></font> End If<br/> Next i<br/> Next p<br/> Application.ScreenUpdating = True<br/>End Sub </p><p><font color="#ff0000"></font> </p> |
|