Excel精英培训网

 找回密码
 注册
查看: 4093|回复: 11

[通知] 【VBA字典数组201301班】C组-第一讲作业上交处

[复制链接]
发表于 2013-11-2 14:54 | 显示全部楼层 |阅读模式
本帖最后由 as0810114 于 2013-11-8 09:46 编辑

本贴为C组作业上交专用,其他组员勿入~~~
对于本次作业添加一个小要求,5道题中,必需有一题解法中使用 ReDim Preserve  
1、作业提交请用上传附件或直接跟帖方式,;
2、附件文件名或帖子标题按要求格式命名:组号-论坛ID,
       如:【VBA字典数组201301班】-C05-萧峰;
3、作业截止时间:2013-11-6 18:00;







excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-2 14:57 | 显示全部楼层
本帖最后由 xdragon 于 2013-11-2 15:18 编辑

{:071:}交作业了

【VBA字典数组201301班】-C08-xdragon.rar

59.54 KB, 下载次数: 38

评分

参与人数 1 +20 金币 +20 收起 理由
无聊的疯子 + 20 + 20 符合要求

查看全部评分

回复

使用道具 举报

发表于 2013-11-2 17:45 | 显示全部楼层
本帖最后由 xdragon 于 2013-11-5 22:53 编辑
  1. Sub 作业二方法2()
  2. Dim arr, brr(1 To 5, 1 To 4), i, j As Integer
  3. With Sheets("2")
  4. arr = .Range("B2:F12")
  5. For Each i In arr
  6.   'brr(i \ 100 Mod 5 + 1, i \ 500 * 2 + 1) = "<" & (i \ 100 + 1) * 100
  7.   brr(i \ 100 Mod 5 + 1, i \ 500 * 2 + 2) = brr(i \ 100 Mod 5 + 1, i \ 500 * 2 + 2) + 1
  8. Next
  9. For j = 1 To 10
  10.   brr((j - 1) Mod 5 + 1, (j \ 6) * 2 + 1) = "<" & j * 100
  11. Next
  12. .Range("H3:K3") = Array("条件", "个数", "条件", "个数")
  13. .[h4].Resize(UBound(brr), 4) = brr
  14. End With
  15. End Sub
复制代码
优化了下,感觉1、3列的赋值还是另起一个循环比较好,这样这个循环只要运算10次。如果在一个循环里,arr里有多少值就要判断多少次,不如这样的省事。虽然看上去长了点

练习5的instr方法
  1. Sub 作业五方法2()
  2. Dim arr, crr, i, j As String
  3. arr = Range("C9:G23")
  4. For Each i In arr
  5. If InStr(1, j, "," & i & ",") = 0 Then j = j & "," & i & ","
  6. Next
  7. crr = Split(Replace(Replace(j, ",,", "|"), ",", ""), "|")
  8. Range("l8:l" & Range("L" & Rows.Count).End(3).Row).ClearContents
  9. [l8].Resize(UBound(crr) + 1) = Application.Transpose(crr)
  10. End Sub
复制代码

点评

要改继续在原楼层编辑,不要再占楼。  发表于 2013-11-9 10:14
回复

使用道具 举报

发表于 2013-11-2 21:25 | 显示全部楼层
本帖最后由 Sellby 于 2013-11-2 22:10 编辑
  1. <p>
  2. Sub 作业一()
  3.     Dim arr(), tempArr
  4.     Dim i As Byte, x As Byte
  5.     With Sheets("1")
  6.         .Columns("b:d").ClearContents
  7.         .Columns("b:d").NumberFormatLocal = "@"
  8.         arr = .Range("a1").CurrentRegion.Value
  9.         x = UBound(arr)
  10.         ReDim Preserve arr(1 To x, 1 To 4)
  11.         For i = 1 To x
  12.             tempArr = Split(arr(i, 1), "*")
  13.             arr(i, 2) = tempArr(0)
  14.             arr(i, 3) = tempArr(1)
  15.             arr(i, 4) = tempArr(2)
  16.        Next i
  17.        .Range("a1").Resize(x, 4) = arr
  18.     End With
  19. End Sub

  20. Sub 作业二()
  21.     Dim arr(), brr(1 To 6, 1 To 4)
  22.     Dim  a
  23.     With Sheets("2")
  24.         arr = .Range("b2:f12").Value
  25.         brr(1, 1) = "条件": brr(1, 2) = "个数"
  26.         brr(1, 3) = "条件": brr(1, 4) = "个数"
  27.         brr(2, 1) = "<100": brr(2, 3) = "<600"
  28.         brr(3, 1) = "<200": brr(3, 3) = "<700"
  29.         brr(4, 1) = "<300": brr(4, 3) = "<800"
  30.         brr(5, 1) = "<400": brr(5, 3) = "<900"
  31.         brr(6, 1) = "<500": brr(6, 3) = "<1000"
  32.         For Each a In arr
  33.             Select Case a
  34.             Case Is < 100
  35.                 brr(2, 2) = brr(2, 2) + 1
  36.             Case Is < 200
  37.                 brr(3, 2) = brr(3, 2) + 1
  38.             Case Is < 300
  39.                 brr(4, 2) = brr(4, 2) + 1
  40.             Case Is < 400
  41.                 brr(5, 2) = brr(5, 2) + 1
  42.             Case Is < 500
  43.                 brr(6, 2) = brr(6, 2) + 1
  44.             Case Is < 600
  45.                 brr(2, 4) = brr(2, 4) + 1
  46.             Case Is < 700
  47.                 brr(3, 4) = brr(3, 4) + 1
  48.             Case Is < 800
  49.                 brr(4, 4) = brr(4, 4) + 1
  50.             Case Is < 900
  51.                 brr(5, 4) = brr(5, 4) + 1
  52.             Case Else
  53.                 brr(6, 4) = brr(6, 4) + 1
  54.             End Select
  55.         Next
  56.         .Range("h3").Resize(6, 4).ClearContents
  57.         .Range("h3").Resize(6, 4) = brr
  58.     End With
  59. End Sub

  60. Sub 作业三()
  61.     Dim arr(), brr()
  62.     Dim i As Byte, j As Byte, x As Byte, y As Byte
  63.     Dim iMax As Double, iMin As Double, iAvg As Double, iSum As Double, a As Double
  64.     With Sheets("3")
  65.         arr = .Range("a2").CurrentRegion.Value
  66.         x = UBound(arr): y = UBound(arr, 2)
  67.         ReDim brr(1 To x, 1 To 5)
  68.         brr(1, 1) = "序号"
  69.         brr(1, 2) = "最大数"
  70.         brr(1, 3) = "最小数"
  71.         brr(1, 4) = "平均值"
  72.         brr(1, 5) = "和"
  73.         For i = 2 To x
  74.             iMax = 0
  75.             iMin = 1000
  76.             iSum = 0
  77.             brr(i, 1) = arr(i, 1)
  78.             For j = 2 To y
  79.                 a = arr(i, j)
  80.                 iSum = iSum + a
  81.                 If a > iMax Then iMax = a
  82.                 If a < iMin Then iMin = a
  83.             Next j
  84.             brr(i, 2) = iMax
  85.             brr(i, 3) = iMin
  86.             brr(i, 4) = iSum / (y - 1)
  87.             brr(i, 5) = iSum
  88.         Next i
  89.         .Range("i2").Resize(x, 5).ClearContents
  90.         .Range("i2").Resize(x, 5) = brr
  91.     End With
  92. End Sub

  93. Sub 作业四()
  94.     Dim arr(), brr(), crr()
  95.     Dim Str, uStr As String, i As Byte
  96.    
  97.     With Sheets("4")
  98.         arr = .Range("c13:g27").Value
  99.         ReDim brr(1 To 255)
  100.         For Each Str In arr
  101.             uStr = Asc(UCase(Str))
  102.             If IsEmpty(brr(uStr)) Then
  103.                 brr(uStr) = Str
  104.                 i = i + 1
  105.                 ReDim Preserve crr(1 To i)
  106.                 crr(i) = Str
  107.             End If
  108.         Next
  109.         
  110.         .Range("c43").Resize(100).ClearContents
  111.         .Range("c43").Resize(i) = Application.Transpose(crr)

  112.     End With
  113. End Sub

  114. Sub 作业五()
  115.     Dim arr(), brr(1 To 20), crr()
  116.     Dim i As Byte
  117.     Dim a
  118.     With Sheets("5")
  119.         arr = .Range("C9:G23").Value
  120.         For Each a In arr
  121.             If IsEmpty(brr(a)) Then
  122.                 brr(a) = a
  123.                 i = i + 1
  124.                 ReDim Preserve crr(1 To i)
  125.                 crr(i) = a
  126.             End If
  127.         Next
  128.         .Range("l8").Resize(20).ClearContents
  129.         .Range("l8").Resize(i) = Application.Transpose(crr)
  130.     End With
  131. End Sub</p><p> </p><p>Sub 作业四2()
  132.     Dim arr(), brr(), crr()
  133.     Dim Str, uStr As String, i As Byte
  134.     With Sheets("4")
  135.         arr = .Range("c13:g27").Value
  136.         ReDim brr(1 To 255)
  137.         For Each Str In arr
  138.             If InStr(uStr, UCase(Str)) = 0 Then
  139.                 uStr = uStr & "6" & UCase(Str)
  140.                 i = i + 1
  141.                 ReDim Preserve crr(1 To i)
  142.                 crr(i) = Str
  143.             End If
  144.         Next
  145.         
  146.         .Range("c43").Resize(100).ClearContents
  147.         .Range("c43").Resize(i) = Application.Transpose(crr)</p><p>    End With
  148. End Sub</p><p> </p>
复制代码

评分

参与人数 1 +20 金币 +20 收起 理由
无聊的疯子 + 20 + 20 符合要求

查看全部评分

回复

使用道具 举报

发表于 2013-11-3 09:18 | 显示全部楼层
C03-hrpotter

  1. Sub 作业一()
  2.     Dim i As Long, j As Long
  3.     Dim arr(), brr() As String, crr() As String
  4.     arr = Range("a1").CurrentRegion
  5.     ReDim brr(1 To UBound(arr), 1 To 3)
  6.     For i = 1 To UBound(arr)
  7.         crr = Split(arr(i, 1), "*")
  8.         For j = 1 To 3
  9.             brr(i, j) = crr(j - 1)
  10.         Next
  11.     Next
  12.     Range("b1").Resize(UBound(brr), 3).ClearContents
  13.     Range("b1").Resize(UBound(brr), 3) = brr
  14. End Sub

  15. Sub 作业二()
  16.     Dim i As Long, j As Long, k As Long, x As Long, y As Long
  17.     Dim arr, brr(1 To 6, 1 To 4)
  18.     arr = Range("b2:f12")
  19.     brr(1, 1) = "条件"
  20.     brr(1, 2) = "个数"
  21.     brr(1, 3) = "条件"
  22.     brr(1, 4) = "个数"
  23.     For i = 2 To 6
  24.         For j = 1 To 3 Step 2
  25.             brr(i, j) = "<" & ((j - 1) * 250 + (i - 1) * 100)
  26.         Next
  27.     Next
  28.     For i = 1 To UBound(arr)
  29.         For j = 1 To UBound(arr, 2)
  30.             k = Int(arr(i, j) / 100)
  31.             y = k \ 5
  32.             x = k Mod 5
  33.             brr(x + 2, 2 + y * 2) = brr(x + 2, 2 + y * 2) + 1
  34.         Next
  35.     Next
  36.     Range("h3").Resize(6, 4).ClearContents
  37.     Range("h3").Resize(6, 4) = brr
  38. End Sub

  39. Sub 作业三()
  40.     Dim arr, brr(1 To 12, 1 To 5)
  41.     Dim i As Long, j As Long
  42.     Dim 和, 平均值, 最大数, 最小数
  43.     arr = Range("b3:f13")
  44.     brr(1, 1) = "序号"
  45.     brr(1, 2) = "最大数"
  46.     brr(1, 3) = "最小数"
  47.     brr(1, 4) = "平均数"
  48.     brr(1, 5) = "和"
  49.     For i = 1 To 11
  50.         和 = 0
  51.         最大数 = arr(i, 1)
  52.         最小数 = arr(i, 1)
  53.         For j = 1 To 5
  54.             和 = 和 + arr(i, j)
  55.             If arr(i, j) > 最大数 Then
  56.                 最大数 = arr(i, j)
  57.             ElseIf arr(i, j) < 最小数 Then
  58.                 最小数 = arr(i, j)
  59.             End If
  60.         Next
  61.         brr(i + 1, 1) = i
  62.         brr(i + 1, 2) = 最大数
  63.         brr(i + 1, 3) = 最小数
  64.         brr(i + 1, 4) = 和 / 5
  65.         brr(i + 1, 5) = 和
  66.     Next
  67.     Range("i2").Resize(12, 5).ClearContents
  68.     Range("i2").Resize(12, 5) = brr
  69. End Sub

  70. Sub 作业四()
  71.     Dim arr, brr(1 To 100, 1 To 1)
  72.     Dim i As Long, j As Long, k As Long, s As String
  73.     arr = Range("c13:g27")
  74.     For j = 1 To UBound(arr, 2)
  75.         For i = 1 To UBound(arr)
  76.             If InStr(s, UCase(arr(i, j))) = 0 Then
  77.                 k = k + 1
  78.                 brr(k, 1) = arr(i, j)
  79.                 s = s & UCase(arr(i, j))
  80.             End If
  81.         Next
  82.     Next
  83.     Range("c43:c100").ClearContents
  84.     Range("c43").Resize(k, 1) = brr
  85. End Sub

  86. Sub 作业五()
  87.     Dim arr, brr(1 To 100000), crr(1 To 100, 1 To 1)
  88.     Dim i As Long, j As Long, k As Long
  89.     arr = Range("c9:g23")
  90.     For j = 1 To UBound(arr, 2)
  91.         For i = 1 To UBound(arr)
  92.             If brr(arr(i, j)) <> 1 Then
  93.                 k = k + 1
  94.                 crr(k, 1) = arr(i, j)
  95.                 brr(arr(i, j)) = 1
  96.             End If
  97.         Next
  98.     Next
  99.     Range("l8:l34").ClearContents
  100.     Range("l8").Resize(k) = crr
  101. End Sub
复制代码
【VBA字典数组201301班】-C03-hrpotter.rar (64.54 KB, 下载次数: 6)

评分

参与人数 1 +16 金币 +20 收起 理由
无聊的疯子 + 16 + 20 未使用preserve扣4点经验

查看全部评分

回复

使用道具 举报

发表于 2013-11-3 12:38 | 显示全部楼层
上交作业了,谢谢老师们!

【VBA字典数组201301班】-C05-箫风第一讲作业.rar

62.2 KB, 下载次数: 14

评分

参与人数 2 +20 金币 +20 收起 理由
寂寞深水鱼 + 12 补分
无聊的疯子 + 8 + 20 符合要求,请班主任给12点经验

查看全部评分

回复

使用道具 举报

发表于 2013-11-3 23:49 | 显示全部楼层
请审阅。。。

【VBA字典数组201301班】c02-monicaj.zip

61.65 KB, 下载次数: 23

评分

参与人数 2 +16 金币 +20 收起 理由
寂寞深水鱼 + 16 补分
无聊的疯子 + 20 未真正应用Preserve,请班主任给16点经验

查看全部评分

回复

使用道具 举报

发表于 2013-11-4 18:46 | 显示全部楼层
谢谢首长

【VBA字典数组201301班】c07-cxloen.rar

65.85 KB, 下载次数: 16

评分

参与人数 2 +8 金币 +20 收起 理由
寂寞深水鱼 + 8 补分
无聊的疯子 + 20 123题未体现出数组的效果,请班主任给8点经.

查看全部评分

回复

使用道具 举报

发表于 2013-11-5 17:13 | 显示全部楼层

【VBA字典数组201301班】第一讲作业1.zip

67.5 KB, 下载次数: 11

评分

参与人数 2 +16 金币 +20 收起 理由
寂寞深水鱼 + 16 补分
无聊的疯子 + 20 未正确应用Preserve,请班主任给16点经验

查看全部评分

回复

使用道具 举报

发表于 2013-11-5 23:53 | 显示全部楼层
本帖最后由 笨熊猫 于 2013-11-5 23:54 编辑

【VBA字典数组201301班】-C04-笨熊猫.rar

63.37 KB, 下载次数: 13

评分

参与人数 1 +16 金币 +20 收起 理由
无聊的疯子 + 16 + 20 未使用Preserve扣4点经验

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 00:19 , Processed in 0.468726 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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