Excel精英培训网

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

[已解决]求大神请教,将有红色填充表格所在行录入新表,有合并单元格

[复制链接]
发表于 2012-10-8 17:09 | 显示全部楼层 |阅读模式
要求将表1(sheet"食品企业评定标准")中D栏(标准分值)被红色填充所在行的内容录入表3(扣分说明)中。其中表一A列、B列有合并单元格。
小弟不才写了下代码(已在附件中),感觉没有问题了,但是运行不出来。
求大神赐教,看看哪里出问题了,有新代码欢迎交流。
遇到死循环的话按Ctrl+Break可以强制退出代码运行。


最佳答案
2012-10-8 17:51
  1. Sub test()
  2.     Dim i As Long, j As Long, k As Long
  3.     Dim arr, brr(1 To 10000, 1 To 8)
  4.     With Sheets("食品企业评定标准")
  5.         arr = .Range("a1").CurrentRegion
  6.         For i = 2 To UBound(arr)
  7.             If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
  8.             If arr(i, 2) = "" Then arr(i, 2) = arr(i - 1, 2)
  9.             If .Cells(i, 4).Interior.ColorIndex = 3 Then
  10.                 k = k + 1
  11.                 For j = 1 To 8
  12.                     brr(k, j) = arr(i, j)
  13.                 Next
  14.             End If
  15.         Next
  16.     End With
  17.     With Sheets("扣分说明")
  18.         .Range("a2:h65536").Clear
  19.         If k > 0 Then
  20.             With .Range("a2").Resize(k, 8)
  21.                 .Value = brr
  22.                 .Borders.LineStyle = 1
  23.                 .WrapText = True
  24.                 .Rows.AutoFit
  25.             End With
  26.         End If
  27.     End With
  28. End Sub
复制代码

【食品企业】评定标准.rar

37.7 KB, 下载次数: 14

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-10-8 17:51 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim i As Long, j As Long, k As Long
  3.     Dim arr, brr(1 To 10000, 1 To 8)
  4.     With Sheets("食品企业评定标准")
  5.         arr = .Range("a1").CurrentRegion
  6.         For i = 2 To UBound(arr)
  7.             If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
  8.             If arr(i, 2) = "" Then arr(i, 2) = arr(i - 1, 2)
  9.             If .Cells(i, 4).Interior.ColorIndex = 3 Then
  10.                 k = k + 1
  11.                 For j = 1 To 8
  12.                     brr(k, j) = arr(i, j)
  13.                 Next
  14.             End If
  15.         Next
  16.     End With
  17.     With Sheets("扣分说明")
  18.         .Range("a2:h65536").Clear
  19.         If k > 0 Then
  20.             With .Range("a2").Resize(k, 8)
  21.                 .Value = brr
  22.                 .Borders.LineStyle = 1
  23.                 .WrapText = True
  24.                 .Rows.AutoFit
  25.             End With
  26.         End If
  27.     End With
  28. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-10-8 17:56 | 显示全部楼层
hrpotter 发表于 2012-10-8 17:51

你好,谢谢,但是我还是不知道怎么才能运算出结果,麻烦告诉一下吧
回复

使用道具 举报

发表于 2012-10-8 18:06 | 显示全部楼层
ynslyjb 发表于 2012-10-8 17:56
你好,谢谢,但是我还是不知道怎么才能运算出结果,麻烦告诉一下吧

把上述代码复制到你的vbe编辑器的模块1里,然后点运行就可以了!
回复

使用道具 举报

 楼主| 发表于 2012-10-8 18:59 | 显示全部楼层
hrpotter 发表于 2012-10-8 18:06
把上述代码复制到你的vbe编辑器的模块1里,然后点运行就可以了!

成功了,大神犀利。请问你是做什么的呢?这东西我弄了两周没弄好,你几分钟就搞定了,厉害的很呐!
回复

使用道具 举报

 楼主| 发表于 2012-10-8 19:31 | 显示全部楼层
hrpotter 发表于 2012-10-8 18:06
把上述代码复制到你的vbe编辑器的模块1里,然后点运行就可以了!

大神,我运行后表2(评分汇总)的内容全部变成了#######,得按F9才能正常显示,有没有什么办法可以解决这个问题呢?
回复

使用道具 举报

发表于 2012-10-8 19:40 | 显示全部楼层
ynslyjb 发表于 2012-10-8 19:31
大神,我运行后表2(评分汇总)的内容全部变成了#######,得按F9才能正常显示,有没有什么办法可以解决这 ...
  1. Sub test()
  2.     Dim i As Long, j As Long, k As Long
  3.     Dim arr, brr(1 To 10000, 1 To 8)
  4.     Application.Calculation = xlCalculationManual    '加这个
  5.     With Sheets("食品企业评定标准")
  6.         arr = .Range("a1").CurrentRegion
  7.         For i = 2 To UBound(arr)
  8.             If arr(i, 1) = "" Then arr(i, 1) = arr(i - 1, 1)
  9.             If arr(i, 2) = "" Then arr(i, 2) = arr(i - 1, 2)
  10.             If .Cells(i, 4).Interior.ColorIndex = 3 Then
  11.                 k = k + 1
  12.                 For j = 1 To 8
  13.                     brr(k, j) = arr(i, j)
  14.                 Next
  15.             End If
  16.         Next
  17.     End With
  18.     With Sheets("扣分说明")
  19.         .Range("a2:h65536").Clear
  20.         If k > 0 Then
  21.             With .Range("a2").Resize(k, 8)
  22.                 .Value = brr
  23.                 .Borders.LineStyle = 1
  24.                 .WrapText = True
  25.                 .Rows.AutoFit
  26.             End With
  27.         End If
  28.     End With
  29.     Application.Calculation = xlCalculationAutomatic    '加这个
  30. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-10-9 18:32 | 显示全部楼层
hrpotter 发表于 2012-10-8 19:40

好像不行额,大神
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 17:05 , Processed in 0.953250 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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