冠军欧洲2010 发表于 2012-3-21 09:21

统计VBA学习小组正式组第十课(第十二讲)的积分帖之作业上交贴(第13周)

说明:
统计帖每个学员只能跟帖回复一次,也就是在原来回复楼层的基础上点编缉,不要一个链接一层楼,否则不计算积分。
各小组学员上交作业时,一定要点击“我要参加”,并注明自己的新组编号和论坛ID,如果点击过“我要参加”但没有跟帖提交作业的,扣该学员5积分;如果跟帖提交了作业,但没有点“我要参加”的,不给予评分。

请各学员看清上面的说明,免得被扣了分分!
本帖为仅楼主可见帖,直接回复即可!
第十课(第12讲)作业链接:

从从容容 发表于 2012-3-21 11:25

本次有作业吗?{:101:}

水上漂123 发表于 2012-3-21 19:02

Sub dd()
Dim rg As Range, x As Integer
For x = 2 To 11
   If Cells(x, 4) > 20 Then
   If rg Is Nothing Then
      Set rg = Rows(x)
   Else
      Set rg = Union(rg, Rows(x))
   End If
   End If
Next x
rg.Select
End Sub
Sub dd2()
Dim sr As String, x As Integer
For x = 2 To 11
   If Cells(x, 4) > 20 Then
       If sr = "" Then
          sr = x & ":" & x
       Else
          sr = sr & "," & x & ":" & x
       End If
   End If
Next x
Range(sr).Select
End Sub
Sub dd3()
Dim sr As String, x As Integer, kAs Integer
For x = 2 To 11
   k = x
   If Cells(x, 4) > 20 Then
   Do While Cells(x, 4) > 20
       x = x + 1
   Loop
   sr = sr & k & ":" & x - 1 & ","
   End If
Next x
sr = Left(sr, Len(sr) - 1)
Range(sr).Select
End Sub

雨后彩霞 发表于 2012-3-22 21:45

Sub 选取大于二十所在的行()

    Dim rg As Range, x As Integer
    Dim y As Integer
    y = Range("d" & Rows.Count).End(xlUp).Row
    For x = 2 To y
      If Cells(x, 4) > 20 Then
            If rg Is Nothing Then'is nothing 判断rg是不是为空
                Set rg = Rows(x)   '把第一个>20的数放进去,也就是给rg 一个初始值
            Else               '否则
                Set rg = Union(rg, Rows(x))   'rg在原来的基础上在加一行,用union把符合条件的组合到一起,注用Union连接区域rg必须要有初始值。
            End If
      End If
    Next x
    rg.Select
End Sub
Sub 选取方法2()
    Dim y As Integer, yy As String
    Dim y1
    y1 = Range("d" & Rows.Column).End(xlUp).Row
    For y = 2 To y1
      If Cells(y, 4) > 20 Then
            If yy = "" Then
                yy = y & ":" & y
            Else
                yy = yy & "," & y & ":" & y
            End If
      End If
    Next y
    Range(yy).Select
End Sub

雨后彩霞 发表于 2012-3-22 22:02

这理说是明下,我不能编辑,只能在下一楼更正下。第二题的 y1 = Range("d" & Rows.Column).End(xlUp).Row 里面的Column错了,正确的是count.上交了后我才去运行我的程序发现出错了。

Tristone 发表于 2012-3-26 19:58

'方法1:
Private Sub 选取1()
Dim i As Integer, rg As Range
    For i = 2 To 11
      If Cells(i, 4) > 20 Then
            If rg Is Nothing Then
            Set rg = Rows(i)
            Else
            Set rg = Union(rg, Rows(i))
            End If
      End If
    Next i
    rg.Select
End Sub

'方法2:

Sub 选取2()
Dim sr As String, x As Integer, k
For x = 2 To 11
    If Cells(x, 4) > 20 Then
      If sr = "" Then
      sr = x & ":" & x
      Else
      sr = sr & "," & x & ":" & x
      End If
    End If
Next x
Range(sr).Select
End Sub

'方法3:

Sub 选取3()
Dim sr As String, x As Integer, k
For x = 2 To 11
    k = x
      If Cells(x, 4) > 20 Then
          Do While Cells(x, 4) > 20
            x = x + 1
          Loop
          sr = sr & k & ":" & x - 1 & ","
      End If
Next x
sr = Left(sr, Len(sr) - 1)
Range(sr).Select
   
End Sub
页: [1]
查看完整版本: 统计VBA学习小组正式组第十课(第十二讲)的积分帖之作业上交贴(第13周)