Excel精英培训网

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

[已解决]如何让D1以下一个数据也可执行

[复制链接]
发表于 2012-12-12 21:40 | 显示全部楼层 |阅读模式
这个帮我改改为什么D2到D20只有一个数据时不运行这个宏,帮我改改只有一个数据时也执行,谢谢!!
最佳答案
2012-12-12 21:50
  1.             ARR2 = .Range("D2:D" & ROW1)
  2.             
  3.             ReDim arr11(1 To UBound(arr1) + UBound(ARR2), 1 To 1)
复制代码
如果ROW1等于2时,ARR2就是非数组了,接着就报错。

ii.rar

19.09 KB, 下载次数: 9

发表于 2012-12-12 21:50 | 显示全部楼层    本楼为最佳答案   
  1.             ARR2 = .Range("D2:D" & ROW1)
  2.             
  3.             ReDim arr11(1 To UBound(arr1) + UBound(ARR2), 1 To 1)
复制代码
如果ROW1等于2时,ARR2就是非数组了,接着就报错。

评分

参与人数 1 +3 收起 理由
fangniuji + 3

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-12-12 22:00 | 显示全部楼层
hwc2ycy 发表于 2012-12-12 21:50
如果ROW1等于2时,ARR2就是非数组了,接着就报错。

帮我改一下,谢谢谢谢!!
回复

使用道具 举报

发表于 2012-12-12 22:23 | 显示全部楼层
,还没解决,就来最佳了啊。
回复

使用道具 举报

 楼主| 发表于 2012-12-12 22:24 | 显示全部楼层
hwc2ycy 发表于 2012-12-12 22:23
,还没解决,就来最佳了啊。

鼓励一下,辛苦啦!!!!
回复

使用道具 举报

发表于 2012-12-12 22:29 | 显示全部楼层
  1. Sub test1()
  2.     With Sheets("%")
  3.         row1 = .Range("D20").End(xlUp).Row
  4.         row2 = .Range("A65536").End(xlUp).Row
  5.         arr1 = .Range("A1:A" & row2)
  6.         If row1 > 1 Then
  7.             If row1 = 2 Then
  8.                 ReDim arr2(1 To 1, 1 To 1)
  9.                arr2(1, 1) = .Range("D2:D" & row1)
  10.             Else
  11.                 arr2 = .Range("d2:d" & row1)
  12.             End If
  13.             
  14.             ReDim arr11(1 To UBound(arr1) + UBound(arr2), 1 To 1)
  15.             For i = 1 To UBound(arr1)
  16.                 k = k + 1
  17.                 arr11(k, 1) = arr1(i, 1)
  18.                 If arr1(i, 1) = "%" Then
  19.                     For J = 1 To UBound(arr2)
  20.                         k = k + 1
  21.                         arr11(k, 1) = arr2(J, 1)
  22.                     Next J
  23.                 End If
  24.             Next i
  25.             '清空B列,结果显示在B列
  26.             .Columns("B:B").ClearContents
  27.             .Range("B1").Resize(k, 1) = arr11
  28.         Else
  29.             '清空B列,结果显示在B列
  30.             .Columns("B:B").ClearContents
  31.             .Range("B1").Resize(UBound(arr1), 1) = arr1
  32.         End If
  33.     End With
  34. End Sub

  35. Sub test2()
  36.     With Sheets("%")
  37.         row1 = .Range("D20").End(xlUp).Row
  38.         row2 = .Range("A65536").End(xlUp).Row
  39.         arr1 = .Range("A1:A" & row2)
  40.         If row1 > 1 Then
  41.             If row1 = 2 Then
  42.                 ReDim arr2(1 To 1, 1 To 1)
  43.                 arr2(1, 1) = .Range("d2:d" & row1)
  44.             Else
  45.                 arr2 = .Range("D2:D" & row1)
  46.             End If
  47.             ReDim arr11(1 To UBound(arr1) + UBound(arr2), 1 To 1)
  48.             For i = 1 To UBound(arr1)
  49.                
  50.                 If arr1(i, 1) = "%" Then
  51.                     For J = 1 To UBound(arr2)
  52.                         k = k + 1
  53.                         arr11(k, 1) = arr2(J, 1)
  54.                     Next J
  55.                 End If
  56.                 k = k + 1
  57.                 arr11(k, 1) = arr1(i, 1)
  58.             Next i
  59.             '清空B列,结果显示在B列
  60.             .Columns("B:B").ClearContents
  61.             .Range("B1").Resize(k, 1) = arr11
  62.         Else
  63.             '清空B列,结果显示在B列
  64.             .Columns("B:B").ClearContents
  65.             .Range("B1").Resize(UBound(arr1), 1) = arr1
  66.         End If
  67.     End With
  68. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-12 22:33 | 显示全部楼层
  1. Sub test1()
  2.     Dim arr2
  3.     With Sheets("%")
  4.         row1 = .Range("D20").End(xlUp).Row
  5.         row2 = .Range("A65536").End(xlUp).Row
  6.         arr1 = .Range("A1:A" & row2)
  7.         If row1 > 1 Then
  8.             If row1 = 2 Then
  9.                 ReDim arr2(1 To 1, 1 To 1)
  10.                arr2(1, 1) = .Range("D2:D" & row1)
  11.             Else
  12.                 arr2 = .Range("d2:d" & row1)
  13.             End If
  14.             
  15.             ReDim arr11(1 To UBound(arr1) + UBound(arr2), 1 To 1)
  16.             For i = 1 To UBound(arr1)
  17.                 k = k + 1
  18.                 arr11(k, 1) = arr1(i, 1)
  19.                 If arr1(i, 1) = "%" Then
  20.                     For J = 1 To UBound(arr2)
  21.                         k = k + 1
  22.                         arr11(k, 1) = arr2(J, 1)
  23.                     Next J
  24.                 End If
  25.             Next i
  26.             '清空B列,结果显示在B列
  27.             .Columns("B:B").ClearContents
  28.             .Range("B1").Resize(k, 1) = arr11
  29.         Else
  30.             '清空B列,结果显示在B列
  31.             .Columns("B:B").ClearContents
  32.             .Range("B1").Resize(UBound(arr1), 1) = arr1
  33.         End If
  34.     End With
  35. End Sub

  36. Sub test2()
  37.     Dim arr2
  38.     With Sheets("%")
  39.         row1 = .Range("D20").End(xlUp).Row
  40.         row2 = .Range("A65536").End(xlUp).Row
  41.         arr1 = .Range("A1:A" & row2)
  42.         If row1 > 1 Then
  43.             If row1 = 2 Then
  44.                 ReDim arr2(1 To 1, 1 To 1)
  45.                 arr2(1, 1) = .Range("d2:d" & row1)
  46.             Else
  47.                 arr2 = .Range("D2:D" & row1)
  48.             End If
  49.             ReDim arr11(1 To UBound(arr1) + UBound(arr2), 1 To 1)
  50.             For i = 1 To UBound(arr1)
  51.                
  52.                 If arr1(i, 1) = "%" Then
  53.                     For J = 1 To UBound(arr2)
  54.                         k = k + 1
  55.                         arr11(k, 1) = arr2(J, 1)
  56.                     Next J
  57.                 End If
  58.                 k = k + 1
  59.                 arr11(k, 1) = arr1(i, 1)
  60.             Next i
  61.             '清空B列,结果显示在B列
  62.             .Columns("B:B").ClearContents
  63.             .Range("B1").Resize(k, 1) = arr11
  64.         Else
  65.             '清空B列,结果显示在B列
  66.             .Columns("B:B").ClearContents
  67.             .Range("B1").Resize(UBound(arr1), 1) = arr1
  68.         End If
  69.     End With
  70. End Sub
复制代码
上面的,对于2个的有问题,改了下。
回复

使用道具 举报

 楼主| 发表于 2012-12-12 22:41 | 显示全部楼层
hwc2ycy 发表于 2012-12-12 22:33
上面的,对于2个的有问题,改了下。

这个OK啦OK哦OKOK
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 01:55 , Processed in 1.706263 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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