Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
123
返回列表 发新帖

[通知] [通知] 统计VBA学习小组正式组的积分帖之作业上交贴(第15周)

  [复制链接]
发表于 2012-4-25 23:05 | 显示全部楼层
梅一枝vba12讲单元格查找与合并题.rar (8.71 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2012-4-26 08:15 | 显示全部楼层
回复

使用道具 举报

发表于 2012-4-26 13:45 | 显示全部楼层
老师,上一课作业我不会做,听完课后才做。现交如下
Sub 第一题_按钮2_单击()
    Dim rg1, rg2 As Range
    Dim firstRow, endRow, k As Integer
    Set rg1 = Range("a1")
    Do
        k = k + 1
        Set rg1 = Range("a:a").Find("A", after:=rg1, lookat:=xlWhole)
        firstRow = rg1.Row
        Set rg2 = Range("a:a").Find("A", after:=rg1, lookat:=xlWhole)
        If rg2.Row < firstRow Then
            endRow = Range("a65536").End(xlUp).Row
        Else
            endRow = rg2.Row - 1
        End If
        Range("a" & firstRow & ":a" & endRow).Copy Cells(1, 2 + k)
    Loop Until rg2.Row < firstRow
End Sub

Sub 按钮2_单击()
   Dim x, firstRow As Integer
   If IsNull(Range("a1:a15").MergeCells) = True Then
        Range("a1:a15").UnMerge
    Else
        For x = 2 To Range("a65536").End(xlUp).Row
            firstRow = x
            Do
                x = x + 1
            Loop Until Cells(x, 1) <> Cells(x + 1, 1)
            Range(Cells(firstRow, 1), Cells(x, 1)).Merge
            Application.DisplayAlerts = False
        Next x
    End If
End Sub
第二题还有个疑问,如果合并之后,只剩下左上角数据了,中间会空一些,怎么办呢?
我加了一个判断,如下
Sub 按钮2_单击()
   Dim x, firstRow As Integer
   If IsNull(Range("a1:a15").MergeCells) = True Then
        Range("a1:a15").UnMerge
        For x = 2 To 15
            If Cells(x, 1) = "" Then Cells(x, 1) = Cells(x - 1, 1)
        Next x
    Else
        For x = 2 To Range("a65536").End(xlUp).Row
            firstRow = x
            Do
                x = x + 1
            Loop Until Cells(x, 1) <> Cells(x + 1, 1)
            Range(Cells(firstRow, 1), Cells(x, 1)).Merge
            Application.DisplayAlerts = False
        Next x
    End If
End Sub
vba第12课作业.rar (9.51 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2012-4-27 14:11 | 显示全部楼层

Sub 按钮2_单击()
Dim X As Integer, 开始行数 As Integer
  If IsNull(Range("a1:a15").MergeCells) = True Then
    Range("a1:a15").UnMerge
  Else
    For X = 2 To Range("a65536").End(xlUp).Row
       开始行数 = X
       Do
         X = X + 1
       Loop Until Cells(X + 1, 1) <> Cells(X, 1)
       Application.DisplayAlerts = False
         Range(Cells(开始行数, 1), Cells(X, 1)).Merge
       Application.DisplayAlerts = True
    Next X
  End If
End Sub

Sub 第一题_按钮2_单击()
Dim X As Integer, 开始行数, 结束行数
Dim rg As Range, rg1 As Range, y As Integer, k As Integer
Set rg = Range("a1")
Do
   k = k + 1
   Set rg = Range("a:a").Find("A", after:=rg, lookat:=xlWhole)
   开始行数 = rg.Row
   Set rg1 = Range("a:a").Find("A", after:=rg, lookat:=xlWhole)
   If rg1.Row < 开始行数 Then
      结束行数 = Range("A65536").End(xlUp).Row
   Else
      结束行数 = rg1.Row - 1
   End If
   Range(Cells(开始行数, 1), Cells(结束行数, 1)).Copy Cells(k + 2)
Loop Until rg1.Row < 开始行数
End Sub


回复

使用道具 举报

发表于 2012-4-27 15:27 | 显示全部楼层
不好意思,上次可没来听,作业没及时完成,补交
vba第12课作业-B06-liuho1.zip (12.6 KB, 下载次数: 3)

vba第12课作业-B06-liuho1.xls

40.5 KB, 下载次数: 3

回复

使用道具 举报

发表于 2012-4-28 17:33 | 显示全部楼层
Sub 第13课数组作业()
  Dim x As Long, y As Long, h
  Dim arr(1 To 17, 1 To 4)
  h = 0
  For x = 1 To 17
    For y = 1 To 4
       arr(x, y) = Cells(x, y)
       Cells(x, y + 6) = arr(x, y) '要求1
       If arr(x, y) < 0 Then
          Cells(x, y + 6) = 0
       End If
       If arr(x, y) < 0 Then '要求2: 把负数全部显示到M列
          h = h + 1
          Range("m" & h) = arr(x, y)
       End If
    Next y
  Next x
End Sub

第13课作业.xls

27 KB, 下载次数: 3

回复

使用道具 举报

发表于 2012-4-28 17:46 | 显示全部楼层
老师你好,对不起,搞忘了写论坛ID号,现在补上,我的新组编号没有找到,27楼是我的作业
libenwen2011   (UID: 514207)
一直都在忙,今天才能抽空完成作业
谢谢老师体谅!!
回复

使用道具 举报

发表于 2012-4-28 18:57 | 显示全部楼层
对不起,搞错了,第16周的作业
回复

使用道具 举报

发表于 2012-4-29 21:15 | 显示全部楼层
vba第12课作业.rar (8.43 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2015-6-18 07:21 | 显示全部楼层
122333
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 22:06 , Processed in 0.430197 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表