Excel精英培训网

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

请帮手写段代码,谢谢!

[复制链接]
发表于 2014-5-28 23:38 | 显示全部楼层 |阅读模式
5学分
本帖最后由 wangby 于 2014-5-29 11:16 编辑


9920140527.rar (68.19 KB, 下载次数: 13)

最佳答案

查看完整内容

代码你先测试一下吧,数据量不大的话速度应该没有问题 ABC列输入一次就有一次反应。
发表于 2014-5-28 23:38 | 显示全部楼层
代码你先测试一下吧,数据量不大的话速度应该没有问题
ABC列输入一次就有一次反应。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim arr, brr, i&, j&, r&
  3. If Target.Column < 4 Then
  4.   If Target.Count = 1 Then
  5.     With Sheets(Cells(Target.Row, 1).Value)
  6.       arr = .Range("a5:l" & .[a65536].End(3).Row)
  7.       ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2) - 2)
  8.       For i = 1 To UBound(arr)
  9.         If arr(i, 1) = Cells(Target.Row, 2).Value Then
  10.           If arr(i, 2) = Cells(Target.Row, 3).Value Then
  11.             If Len(arr(i, 10)) + Len(arr(i, 11)) + Len(arr(i, 12)) > 0 Then
  12.               r = r + 1
  13.               For j = 3 To 12
  14.                 brr(r, j - 2) = arr(i, j)
  15.               Next j
  16.             End If
  17.           End If
  18.         End If
  19.       Next i
  20.     End With
  21.   Cells(Target.Row, 4).Resize(UBound(brr), UBound(brr, 2)) = brr
  22.   End If
  23. End If
  24. End Sub
复制代码
回复

使用道具 举报

发表于 2014-5-29 10:54 | 显示全部楼层
同一个工作表内,同一个项目分类有多行数据,并且工序为空或者工序相同时怎么锁定记录?
举例:
1、“应用领域A”&#8658;项目分类“原”&#8658;工充为空,但是有两行数据,取哪一行?
2、“应用领域A”&#8658;项目分类“过”&#8658;工充“混”,存在多行记录,取哪一行?
回复

使用道具 举报

发表于 2014-5-29 10:57 | 显示全部楼层
2、“应用领域A”&#8658;项目分类“过”&#8658;工充“混”,存在多行记录,取哪一行?

这个明白了,应该是取全部,第1条还请确认一下
回复

使用道具 举报

 楼主| 发表于 2014-5-29 11:08 | 显示全部楼层
本帖最后由 wangby 于 2014-5-29 11:12 编辑
大灰狼1976 发表于 2014-5-29 10:57
这个明白了,应该是取全部,第1条还请确认一下

谢谢你。

你说的第二个问,只要对应的“初、中、高”这3列对应行不是空值时,全部都可以显示出来。

即以下序号的,内容都可以显示出来;序号3-7,“初、中、高”这3列对应行都为空值,所以不用显示出来,谢谢!

8
9
10
11
12
13
14
15
16


手工输入“应用领域、项目分类、工序”,根据条件进行显示相应的内容。

工序:这里会有空值,显示哪行的值,根据“初、中、高”这3列对应行不是空值时,就显示,如是空就不显示,这里的逻辑应该会用到“序号”。
               
序号:这列的值不会重复。


回复

使用道具 举报

 楼主| 发表于 2014-5-29 11:11 | 显示全部楼层
大灰狼1976 发表于 2014-5-29 10:57
这个明白了,应该是取全部,第1条还请确认一下

您说的第1个问题,只能取“序号”为1的这行,因为这行的“初、中、高”这3列对应行不为空值,“序号”为2的这“初、中、高”这3列对应的行是空值。
回复

使用道具 举报

发表于 2014-5-29 11:17 | 显示全部楼层
如果这样的话,感觉输入一次ABC列数据时生成一次比较好,
如果事先写好ABC列的话,不好判断一个条件到底会有多少行数据。
回复

使用道具 举报

 楼主| 发表于 2014-5-29 11:36 | 显示全部楼层
大灰狼1976 发表于 2014-5-29 11:17
如果这样的话,感觉输入一次ABC列数据时生成一次比较好,
如果事先写好ABC列的话,不好判断一个条件到底会 ...

A、B、C的数据一次性生成也可以,到时我用公式调用成现在的情况也可以;要不,A、B手工输入,根据A、B来识别可以吗。或者你看怎么好做就怎么弄吧,谢谢您。
回复

使用道具 举报

 楼主| 发表于 2014-6-4 17:48 | 显示全部楼层
大灰狼1976 发表于 2014-5-28 23:38
代码你先测试一下吧,数据量不大的话速度应该没有问题
ABC列输入一次就有一次反应。

我的数据量很少,您写的代码,完全符合需求,谢谢您。

能否再帮手写2段代码吗,请帮手看一下,谢谢您。

http://www.excelpx.com/thread-326221-1-1.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 01:19 , Processed in 0.126430 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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