Excel精英培训网

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

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

  [复制链接]
发表于 2012-4-26 23:13 | 显示全部楼层
Sub 更换()
Dim tg
Dim x, y, k As Integer
k = 1

tg = Range("a1:d17")
  For x = 1 To UBound(tg)
      For y = 1 To UBound(tg, 2)
          If Cells(x, y) < 0 Then
          Range("m" & k) = Cells(x, y)
          k = k + 1
          tg(x, y) = 0
      End If
      Next y
      Next x

      Range("g1:j13") = ""
      Range("g1").Resize(UBound(tg), UBound(tg, 2)) = tg



End Sub

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 M列也要用数组生成哦

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2012-4-27 00:01 | 显示全部楼层
这是第二种做法:

Sub 更换1()
Dim arr1(1 To 100, 1 To 1)
Dim tg
Dim x, y, k As Integer
k = 1
tg = Range("a1:d17")
  For x = 1 To UBound(tg)
      For y = 1 To UBound(tg, 2)
          If Cells(x, y) < 0 Then
          arr1(k, 1) = tg(x, y)
          k = k + 1
          tg(x, y) = 0
      End If
      Next y
      Next x

      Range("g1:j13") = ""
      Range("g1").Resize(UBound(tg), UBound(tg, 2)) = tg
     Range("m1").Resize(UBound(arr1), UBound(arr1, 2)) = arr1


End Sub

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 补上奖励

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 07:39 | 显示全部楼层
D03 从从容容

Sub 第一题()
Dim arr(1 To 17, 1 To 4)
Dim arry
Dim m, n, k As Integer
arry = Range("a1:d17")
For m = 1 To UBound(arry, 1)
  For n = 1 To UBound(arry, 2)
   If arry(m, n) < 0 Then
     arry(m, n) = 0
   End If
     arr(m, n) = arry(m, n)
     Cells(m, n + 6) = arr(m, n)
  Next n
Next m
End Sub
Sub 第二题()
Dim arr1
Dim arr2(1 To 1000, 1 To 1)
Dim m, n, k As Integer
k = 1
  arr1 = Range("a1:d17")
  For m = 1 To UBound(arr1, 1)
   For n = 1 To UBound(arr1, 2)
     If arr1(m, n) < 0 Then
       arr2(k, 1) = arr1(m, n)
       Cells(k, "m") = arr2(k, 1)
       k = k + 1
     End If
   Next n
  Next m
End Sub
13课作业.rar (9.81 KB, 下载次数: 3)

评分

参与人数 1金币 +9 收起 理由
兰色幻想 + 9 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 09:37 | 显示全部楼层
13课作业-yl_li.rar (9.83 KB, 下载次数: 2)

评分

参与人数 1金币 +8 收起 理由
兰色幻想 + 8 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 13:43 | 显示全部楼层
C09:sliang28
  1. Private Sub CommandButton1_Click()

  2. Dim i, j, k As Integer

  3. Dim arr(1 To 17, 1 To 4)
  4. Dim arr1(1 To 100)

  5. k = 1
  6. For i = 1 To 17
  7.    
  8.    For j = 1 To 4
  9.    
  10.      If Cells(i, j) >= 0 Then
  11.       
  12.        arr(i, j) = Cells(i, j)
  13.         
  14.          Else
  15.             
  16.             arr1(k) = Cells(i, j)
  17.                
  18.                k = k + 1
  19.             
  20.                   arr(i, j) = 0
  21.    
  22.        End If
  23.    
  24.    Next

  25. Next
  26.    
  27.     [G1:J17] = arr
  28.    
  29.     [M1:M100] = WorksheetFunction.Transpose(arr1)

  30. End Sub
复制代码

13课作业.zip

12.08 KB, 下载次数: 2

评分

参与人数 1金币 +8 收起 理由
兰色幻想 + 8 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 16:04 | 显示全部楼层
Sub 十三课()
Dim ARR, x As Integer, y As Integer, a As Integer
Dim arr1(1 To 1000, 1 To 1)
   a = 0
ARR = Range("a1:d17")
For x = 1 To UBound(ARR)
   For y = 1 To UBound(ARR, 2)
     If ARR(x, y) < 0 Then
     a = a + 1
      arr1(a, 1) = ARR(x, y)
      ARR(x, y) = 0
    End If
   Next y
Next x
Range("g1:j17") = ARR
Range("m1").Resize(a + 1, 1) = arr1
End Sub

13课作业-B06-liuho1.zip

10.46 KB, 下载次数: 2

评分

参与人数 1金币 +9 收起 理由
兰色幻想 + 9 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 16:09 | 显示全部楼层
13课作业-E学委-sunjing-zxl.rar (10.07 KB, 下载次数: 6)

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 16:10 | 显示全部楼层
来交作业校长幸苦!H组-H15:hactnet
Sub test()

Dim x As Integer, y As Integer, k As Integer
Dim arr
Dim arr1(1 To 1000, 1 To 1)

arr = Range("A1:D17")
k = 1
   
    For x = 1 To UBound(arr)
        For y = 1 To UBound(arr, 2)
        If arr(x, y) < 0 Then
            arr1(k, 1) = arr(x, y)
            k = k + 1
            arr(x, y) = 0
        End If
        Next y
    Next x

Range("G1:J17") = ""
'Range("G1:J17") = arr
Range("G1").Resize(UBound(arr), UBound(arr, 2)) = arr
Range("M1").Resize(UBound(arr1), 1) = arr1

End Sub


VBA入门13课作业H15-hactnet.rar

7.82 KB, 下载次数: 2

评分

参与人数 1金币 +10 收起 理由
兰色幻想 + 10 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 21:34 | 显示全部楼层
本帖最后由 byhdch 于 2012-4-27 21:42 编辑

A09:byhdch


  1. Sub 负数转零()
  2.     Dim arr, x, y As Integer
  3.     arr = Range("a1:d17")
  4.     For x = 1 To UBound(arr)
  5.         For y = 1 To UBound(arr, 2)
  6.             If arr(x, y) < 0 Then arr(x, y) = 0
  7.         Next y
  8.     Next x
  9.     Range("g1").Resize(17, 4) = arr
  10. End Sub

  11. Sub 负数排列()
  12.     Dim arr, arr1(1 To 10000, 1 To 1)
  13.     Dim x, y, k As Integer
  14.     arr = Range("a1:d17")
  15.     For x = 1 To UBound(arr)
  16.         For y = 1 To UBound(arr, 2)
  17.             If arr(x, y) < 0 Then
  18.                 k = k + 1
  19.                 arr1(k, 1) = arr(x, y)
  20.             End If
  21.         Next y
  22.     Next x
  23.     Range("m1").Resize(k) = arr1
  24. End Sub
复制代码
13课作业 A09byhdch.rar (9.79 KB, 下载次数: 2)

评分

参与人数 1金币 +9 收起 理由
兰色幻想 + 9 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-4-27 21:40 | 显示全部楼层
Sub 要求一()
Dim Rg As Range
For Each Rg In Range("A1:D17")
If Rg > 0 Then
    Rg = Rg
Else
    Rg = 0
End If
Next Rg
    Range("A1:D17").Copy Range("G1")
End Sub
Sub 要求二()
Dim arr1(1 To 1000, 1 To 1)
Dim arr
Dim X, Y, K
arr = Range("a1:d17")
For X = 1 To UBound(arr, 1)
    For Y = 1 To UBound(arr, 2)
        If arr(X, Y) < 0 Then
            K = K + 1
            arr1(K, 1) = arr(X, Y)
        End If
Next Y, X
    Range("m1").Resize(K, 1) = arr1
End Sub

13课作业.rar

11.6 KB, 下载次数: 2

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 第一个不符题义,要用VBA数组完成

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 00:57 , Processed in 0.426353 second(s), 21 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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