Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 20943|回复: 59

[练习题] VBA实战营招生考试题(考试结束)

  [复制链接]
发表于 2012-8-14 19:56 | 显示全部楼层 |阅读模式
本帖最后由 兰色幻想 于 2012-8-16 08:58 编辑

        本试题即是VBA实战营招生考试题目,也是VBA学习小组毕业考试题目。共3个大题。
                 循环题20分
                 自定义函数60分
                 VBA数组题目20分
        题目下载: VBA实战营考试题.rar (9.3 KB, 下载次数: 398)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-8-14 20:13 | 显示全部楼层
本帖最后由 askteller 于 2012-8-14 23:07 编辑
  1. Sub 第一题()
  2.     Dim i, irow, a
  3.     irow = [A65536].End(3).Row
  4.     'On Error Resume Next
  5.     For i = 2 To irow
  6.         If Cells(i, 2) + Cells(i + 1, 2) + Cells(i + 2, 2) + Cells(i + 3, 2) + Cells(i + 4, 2) > 14 Then
  7.             Range("A" & i & ":B" & i + 4).Interior.ColorIndex = 6
  8.             i = i + 6
  9.         End If
  10.     Next i
  11. End Sub
复制代码
  1. Sub 第三题()
  2. Dim arr()
  3. Dim myst
  4. arr = Array(13, 2, 3, 4, 6, 7, 8, 9, 22, 32)
  5. arr(4) = arr(4) & "|" & "100"
  6. myst = Join(arr, "|")
  7. arr = Array(Split(myst, "|"))
  8. End Sub
复制代码
  1. Function Wlookup(a As Range, b As Range, c As Integer, Optional d As Integer = 0) '第二题
  2. Application.Volatile
  3. Dim arr()
  4. Dim i, j, m, n, irow, icolumn
  5. arr = b
  6. irow = b.Row: icolumn = b.Column
  7. If c > 0 Then
  8. j = c - 1
  9. Else
  10. j = c
  11. End If
  12. If d = 0 Then
  13. For i = 1 To UBound(arr)
  14. If a = arr(i, 1) Then
  15. m = i + irow - 1
  16. Exit For
  17. End If
  18. Next i
  19. Wlookup = Cells(m, icolumn).Offset(0, j)
  20. ElseIf d = -1 Then
  21. For i = UBound(arr) To 1 Step -1
  22. If a = arr(i, 1) Then
  23. m = i + irow - 1
  24. Exit For
  25. End If
  26. Next i
  27. Wlookup = Cells(m, icolumn).Offset(0, j)
  28. ElseIf d > 0 Then
  29. For i = 1 To UBound(arr)
  30. If a = arr(i, 1) Then
  31. m = i + irow - 1
  32. n = n + 1
  33. If n = d Then
  34. Wlookup = Cells(m, icolumn).Offset(0, j)
  35. Exit For
  36. Else: Wlookup = "不存在"
  37. End If

  38. End If
  39. Next i
  40. Else
  41. Wlookup = "不存在"
  42. End If
  43. If VarType(Wlookup) = 7 Then Wlookup = Format(Wlookup, "yyyy-m-d")
  44. End Function
复制代码
只记得贴代友,差点忘记上传附件了,现补上。
VBA实战营考试题_askteller.rar (21.73 KB, 下载次数: 38)

点评

第一题5分,第二题60分,第3题20分,合计85分  发表于 2012-8-15 09:17
回复

使用道具 举报

发表于 2012-8-14 20:59 | 显示全部楼层
C12:hrpotter
  1. Sub 循环题()
  2.     Dim i As Long
  3.     With Sheets("循环题")
  4.         .Cells.Interior.ColorIndex = xlNone
  5.         For i = 2 To .Range("a65536").End(xlUp).Row - 4
  6.             If Application.Sum(.Cells(i, 2).Resize(5, 1)) > 14 Then
  7.                 .Cells(i, 1).Resize(5, 2).Interior.ColorIndex = 6
  8.                 i = i + 4
  9.             End If
  10.         Next
  11.     End With
  12. End Sub
  13. Function wlookup(findtext As Variant, rng As Range, m As Integer, Optional n As Integer = 0)
  14.     Dim arr()
  15.     Dim i As Long, j As Long
  16.     Dim rg As Range
  17.     On Error GoTo line
  18.     For Each rg In rng
  19.         If findtext = rg.Value Then
  20.             i = i + 1
  21.             ReDim Preserve arr(1 To i)
  22.             If m <= 0 Then
  23.                 arr(i) = rg.Offset(0, m)
  24.             Else
  25.                 arr(i) = rg.Offset(0, m - 1)
  26.             End If
  27.         End If
  28.     Next
  29.     If n = 0 Then
  30.         j = 1
  31.     ElseIf n = -1 Then
  32.         j = UBound(arr)
  33.     Else
  34.         j = n
  35.     End If
  36.     If VBA.IsDate(arr(j)) Then
  37.         wlookup = Format(arr(j), "yyyy-m-d")
  38.     Else
  39.         wlookup = arr(j)
  40.     End If
  41.     Exit Function
  42. line:
  43.     wlookup = "不存在"
  44. End Function
  45. Sub 数组题()
  46.     Dim arr, i As Integer, j As Integer
  47.     With Sheets("数组题")
  48.         arr = Array(13, 2, 3, 4, 6, 7, 8, 9, 22, 32)
  49.         i = 5
  50.         j = 100
  51.         .Cells.Clear
  52.         .Range("a1").Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
  53.         .Rows(i + 1).Insert
  54.         .Cells(i + 1, 1) = j
  55.         arr = Application.Transpose(.Range("a1:a" & UBound(arr) + 2)) '结果
  56.         .Cells.Clear
  57.     End With
  58. End Sub
复制代码
C12-hrpotter-VBA实战营考试题.rar (20.11 KB, 下载次数: 33)

点评

第3题怎么我们的是一样呢?默契  发表于 2012-8-16 10:44
第1题 20分,第2题60分,第3题 2分。合计 82分  发表于 2012-8-15 09:21
回复

使用道具 举报

发表于 2012-8-14 21:10 | 显示全部楼层
作业在模块中,请批改,谢谢

VBA实战营考试题.zip

24.01 KB, 下载次数: 132

点评

第1题 20分,第2题60分,第3题 20分。合计 100分  发表于 2012-8-15 09:26

评分

参与人数 7 +35 金币 +20 收起 理由
jonnygu + 1 很给力!
askteller + 1 非常值得学习!
9lee + 12 崇拜一下!
ls + 15 很给力!
梅一枝 + 3 哇塞,神一样的人物

查看全部评分

回复

使用道具 举报

发表于 2012-8-14 21:37 | 显示全部楼层
本帖最后由 zjcat35 于 2012-8-15 09:33 编辑

第一题
  1. Sub 第一题()
  2.     Dim i%
  3.     For i = 6 To Cells(Rows.Count, 2).End(3).Row
  4.         If Application.Sum(Range("b" & i - 4 & ":b" & i)) > 14 Then
  5.             Cells(i - 4, 1).Resize(5, 2).Interior.ColorIndex = 6
  6.             i = i + 5
  7.         End If
  8.     Next i
  9. End Sub
复制代码
第二题
  1. Function WLOOKUP(rg As Range, rng As Range, i%, Optional j%)
  2.     Dim arr, k%, brr, m%
  3.     brr = rng
  4.     If rng.Column + i < 1 Or i > rng.Columns.Count Then WLOOKUP = "不存在": Exit Function
  5.     If i <= 0 Then
  6.         arr = rng.Offset(, i).Resize(, 1)
  7.     Else
  8.         arr = rng.Offset(, i - 1).Resize(, 1)
  9.     End If
  10.     If j = -1 Then
  11.         For k = UBound(brr) To 1 Step -1
  12.             If rg.Value = brr(k, 1) Then
  13.                 If IsDate(arr(k, 1)) Then
  14.                     WLOOKUP = Format(arr(k, 1), "yyyy-m-d")
  15.                 Else
  16.                     WLOOKUP = arr(k, 1)
  17.                 End If
  18.                 Exit Function
  19.             End If
  20.         Next k
  21.         WLOOKUP = "不存在"
  22.     ElseIf j > -1 Then
  23.         For k = 1 To UBound(brr)
  24.             If rg.Value = brr(k, 1) Then
  25.                 m = m + 1
  26.                 If m >= j Then
  27.                     If IsDate(arr(k, 1)) Then
  28.                         WLOOKUP = Format(arr(k, 1), "yyyy-m-d")
  29.                     Else
  30.                         WLOOKUP = arr(k, 1)
  31.                     End If
  32.                     Exit Function
  33.                 End If
  34.             End If
  35.         Next k
  36.         WLOOKUP = "不存在"
  37.     Else
  38.         WLOOKUP = "不存在"
  39.     End If
  40. End Function
复制代码
第三题
  1. Sub 第三题()
  2. Dim arr, str$
  3.     arr = Array(13, 2, 3, 4, 6, 7, 8, 9, 22, 32)
  4.     str = Join(arr, ",")
  5.     str = Application.Substitute(str, ",", ",100,", 5)
  6.     arr = Split(str, ",")
  7. End Sub
复制代码

E02:zjcat35.rar

13.57 KB, 下载次数: 20

点评

我们怎么犯了同样的错误哈?  发表于 2012-8-16 09:04
第1题 5分,第2题60分,第3题 20分。合计 85分  发表于 2012-8-15 09:38
回复

使用道具 举报

发表于 2012-8-14 21:41 | 显示全部楼层
本帖最后由 jonnygu 于 2012-8-15 08:36 编辑

第一题
  1. Sub 循环题()
  2.     Dim i As Long, x As Long, y As Long, n As Long, m As Integer
  3.     For i = 2 To Range("a65536").End(3).Row
  4.         n = 0
  5.         n = n + Application.Sum(Range("b" & i + m * 5 - m & ":b" & i + m * 5 - m + 4))
  6.         If n > 14 Then Range("a" & i + m * 5 - m & ":b" & i + m * 5 - m + 4).Interior.ColorIndex = 6: m = m + 1
  7.      Next i
  8. End Sub
复制代码
第二题
  1. Function Wlookup(rng, rng1 As Range, Optional n As Integer, Optional y As Integer)
  2. Dim arr, brr, x As Long, i As Long
  3. brr = rng1
  4. If n < 0 Then n = n + 1
  5. arr = rng1.Offset(0, n - 1)
  6. For i = 1 To UBound(brr)
  7. If brr(i, 1) = rng Then x = x + 1
  8. If y = 0 Then y = 1
  9. If y = x Then Wlookup = IIf(IsDate(arr(i, 1)), Format(arr(i, 1), "yyyy-m-d"), arr(i, 1)): Exit Function
  10. If y = -1 And brr(i, 1) = rng Then Wlookup = IIf(IsDate(arr(i, 1)), Format(arr(i, 1), "yyyy-m-d"), arr(i, 1))
  11. Next
  12. If y <> -1 And Wlookup = 0 Then Wlookup = "不存在"
  13. End Function
复制代码
第三题
  1. Sub 数组题()
  2. Dim arr, istring As String
  3. arr = Array(13, 2, 3, 4, 6, 7, 8, 9, 22, 32)
  4. istring = Join(arr, "@")
  5. istring = Application.WorksheetFunction.Substitute(istring, "@", "@100@", 5)
  6. arr = Split(istring, "@")
  7. End Sub
复制代码

VBA实战营考试题.rar

22.02 KB, 下载次数: 37

点评

第1题 15分,第2题60分,第3题 20分。合计 95分  发表于 2012-8-15 09:46

评分

参与人数 1 +3 收起 理由
CheryBTL + 3 人生兄VBA也这么厉害。。。。!

查看全部评分

回复

使用道具 举报

发表于 2012-8-14 21:41 | 显示全部楼层
只会做循环题了。
VBA实战营考试题-hwc2ycy.rar (12.07 KB, 下载次数: 18)
回复

使用道具 举报

发表于 2012-8-14 21:53 | 显示全部楼层
本帖最后由 rebornxldeng 于 2012-8-15 10:08 编辑

只做出来第1题和第3题... ...先交吧.能拿的BB先拿到是原则.
第2题... ...觉得EXCEL自带的函数够用了.所有一直忽略了对它的学习.

VBA实战营考试题.zip

23.46 KB, 下载次数: 8

回复

使用道具 举报

发表于 2012-8-14 22:03 | 显示全部楼层

谢谢校长放宽时间!

无聊的疯子_VBA实战营考试题.zip (23.9 KB, 下载次数: 27)

点评

第1题20分,第2题60分,第3题 15分。合计 95分  发表于 2012-8-15 09:51
回复

使用道具 举报

发表于 2012-8-14 22:07 | 显示全部楼层
希望能通过考试#¥¥%¥%

VBA实战营考试题-tsigms.rar

34.03 KB, 下载次数: 46

点评

第1题20分,第2题60分,第3题 18分。合计 98分  发表于 2012-8-15 10:12
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 05:14 , Processed in 1.093272 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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