Excel精英培训网

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

[已解决]江湖求救VBA解答,太难了

[复制链接]
发表于 2014-7-1 14:23 | 显示全部楼层 |阅读模式
条件及要求已在附件中,VBA好难
最佳答案
2014-7-1 14:59
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim x, rg As Range, rgs As Range, S1, S2
  3.     If Target.Row = 1 Then
  4.         If Target.Column = 8 Or Target.Column = 10 Then
  5.             Range(Range("F4:i4"), Range("F4:i4").End(xlDown)).Clear
  6.             x = Me.Range("a" & Cells.Rows.Count).End(xlUp).Row
  7.             S1 = Me.[H1].Value
  8.             S2 = Me.[J1].Value
  9.             For Each rg In Me.Range("a2:a" & x)
  10.                 If rg.Value = S1 And rg.Offset(0, 2).Value = S2 Then
  11.                     If rgs Is Nothing Then Set rgs = rg.Resize(1, 4) Else Set rgs = Application.Union(rgs, rg.Resize(1, 4))
  12.                 End If
  13.             Next rg
  14.             If rgs Is Nothing Then Exit Sub
  15.             rgs.Copy
  16.             Me.Range("f4").PasteSpecial
  17.         End If
  18.     End If
  19. End Sub
复制代码

求救(用VBA方法).zip

17.73 KB, 下载次数: 28

发表于 2014-7-1 14:47 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-7-1 14:48 | 显示全部楼层
JLxiangwei 发表于 2014-7-1 14:47
这个还是简单吧,不难

对我来说啊!呵
回复

使用道具 举报

发表于 2014-7-1 14:55 | 显示全部楼层
本帖最后由 开心妙妙 于 2014-7-1 14:57 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim i&, r&, n&
  3.     If Target.Address = "$H$1" Or Target.Address = "$J$1" Then
  4.         r = Range("F2").End(xlDown).Row
  5.         If r > 3 Then Range("F4:I" & r).Clear
  6.         r = Range("A65536").End(xlUp).Row
  7.         For i = 2 To r
  8.             If Range("A" & i) = Range("H1") And Range("C" & i) = Range("J1") Then
  9.                 n = n + 1
  10.                 Range("A" & i & ":D" & i).Copy Cells(3 + n, "F")
  11.             End If
  12.         Next i
  13.     End If
  14. End Sub
复制代码
求救(用VBA方法).rar (25.03 KB, 下载次数: 12)

评分

参与人数 1 +1 收起 理由
阿呆88 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-7-1 14:59 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim x, rg As Range, rgs As Range, S1, S2
  3.     If Target.Row = 1 Then
  4.         If Target.Column = 8 Or Target.Column = 10 Then
  5.             Range(Range("F4:i4"), Range("F4:i4").End(xlDown)).Clear
  6.             x = Me.Range("a" & Cells.Rows.Count).End(xlUp).Row
  7.             S1 = Me.[H1].Value
  8.             S2 = Me.[J1].Value
  9.             For Each rg In Me.Range("a2:a" & x)
  10.                 If rg.Value = S1 And rg.Offset(0, 2).Value = S2 Then
  11.                     If rgs Is Nothing Then Set rgs = rg.Resize(1, 4) Else Set rgs = Application.Union(rgs, rg.Resize(1, 4))
  12.                 End If
  13.             Next rg
  14.             If rgs Is Nothing Then Exit Sub
  15.             rgs.Copy
  16.             Me.Range("f4").PasteSpecial
  17.         End If
  18.     End If
  19. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
阿呆88 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-7-1 15:00 | 显示全部楼层
求救(用VBA方法).rar (26.17 KB, 下载次数: 23)
回复

使用道具 举报

发表于 2014-7-1 15:24 | 显示全部楼层
都做好了呀?咱也做了个,试试:

求救(用VBA方法).zip (25.58 KB, 下载次数: 20)

评分

参与人数 1 +1 收起 理由
阿呆88 + 1 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-7-1 15:33 | 显示全部楼层
本帖最后由 阿呆88 于 2014-7-1 16:21 编辑

你试过你的吗?我刚试了下好像有点问题
回复

使用道具 举报

发表于 2014-7-1 16:07 | 显示全部楼层
这样可以吗?

求救(用VBA方法).zip

26.76 KB, 下载次数: 9

评分

参与人数 1 +1 收起 理由
阿呆88 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2014-7-1 18:33 | 显示全部楼层
阿呆88 发表于 2014-7-1 15:33
你试过你的吗?我刚试了下好像有点问题

你这是说谁呀?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 19:21 , Processed in 0.421181 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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