Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 花小剑

[已解决]有难度,麻烦哪位大神帮我下,非常感谢!有模拟效果

[复制链接]
发表于 2016-4-8 18:29 | 显示全部楼层    本楼为最佳答案   
花小剑 发表于 2016-4-8 17:16
非常期待您的回复

=IF(LEFT(B2)="·",PHONETIC(INDIRECT("D"&ROW()&":D"&MIN(IF(LEFT(B3:B99)="·",ROW(A3:A99),9999)))),IF(F2="","",LOOKUP(1,0/(D$2:D2<>""),$D$2:D2)))
这样的?

计算原稿(科15)试验5(函数).rar

79.72 KB, 下载次数: 8

评分

参与人数 1 +6 收起 理由
lichuanboy44 + 6 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-4-8 18:58 | 显示全部楼层
心正意诚身修 发表于 2016-4-8 18:29
=IF(LEFT(B2)="·",PHONETIC(INDIRECT("D"&ROW()&":D"&MIN(IF(LEFT(B3:B99)="·",ROW(A3:A99),9999)))),I ...

谢谢您,辛苦了!
回复

使用道具 举报

发表于 2016-4-8 19:37 | 显示全部楼层
心正意诚身修 发表于 2016-4-8 17:04
我還有兩分鐘就下班了。然後吃飯。
晚飯後。另外一位VBA老師如果沒有給你新的解法。我再看看。

能把函数做到这个地步,我感觉是登峰造极,十分佩服。
回复

使用道具 举报

发表于 2016-4-8 19:39 | 显示全部楼层
lichuanboy44 发表于 2016-4-8 19:37
能把函数做到这个地步,我感觉是登峰造极,十分佩服。

哈哈。你也来调戏我。。我的函数水平。也就刚刚过了初级。。中级都不定入门了。
回复

使用道具 举报

发表于 2016-4-8 20:01 | 显示全部楼层
代码不很精致,应该达到你的要求,但你的数据处理有点不一般
  1. Sub try()
  2.     On Error Resume Next
  3.     Dim br()
  4.     n = Range("F65536").End(3).Row
  5.     arr = Range("B2:F" & n)
  6.     ReDim br(1 To n, 1 To 1)
  7.     For i = 1 To n
  8.         a = arr(i, 1): b = arr(i, 3): c = arr(i, 5)
  9.         If a Like "·*" Or i = n Then
  10.             If i > 1 Then
  11.                 br(p, 1) = Mid(ss, 2, Len(ss) - 1)
  12.                 ss = "": s上 = ""
  13.             End If
  14.             p = i
  15.         End If

  16.         If b <> "" And c <> "" Then
  17.             br(i, 1) = b
  18.             ss = ss & "、" & b
  19.             s上 = b
  20.         ElseIf b = "" And c <> "" Then
  21.             br(i, 1) = s上
  22.         End If
  23.     Next

  24.     For i = 1 To n
  25.         a = arr(i, 1): b = arr(i, 3): c = arr(i, 5)
  26.         If a <> "" And p2 <> 0 Then
  27.             br(p2, 1) = br(i, 1)
  28.             p2 = 0
  29.         End If

  30.         If a <> "" And Not a Like "·*" And c = "" Then
  31.             p2 = i
  32.         End If
  33.     Next

  34.     [J2].Resize(n - 1, 1) = br
  35. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-4-8 21:11 | 显示全部楼层
lichuanboy44 发表于 2016-4-8 20:01
代码不很精致,应该达到你的要求,但你的数据处理有点不一般

也非常感谢您细心的解答!辛苦了!
回复

使用道具 举报

 楼主| 发表于 2016-4-9 16:24 | 显示全部楼层
lichuanboy44 发表于 2016-4-8 20:01
代码不很精致,应该达到你的要求,但你的数据处理有点不一般

您好,又来麻烦您了,麻烦您下载下我新上传的压缩包,之前的代码写的很好了,这次再麻烦您帮我改进下之前的功能。具体的要求和模拟的效果我已经很详细的写在了工作簿里了,先谢谢啦!

1.B15这种情况在j15处显示的内容为j16、j27、j38内容和(即两个类似的b15之间带“·”的行的j列的内容和(用@号隔开)),但是最后一个类似j15的数据显示为空。模拟结果如下
注:B15对比B6的特点是在f列无数据,B15不一定为红色,这里涂成红色是为了方便您查看。
2.不是以按钮的形式来显示j列的数据,以实时显示的方式,就是说有内容改变就做自动显示新内容。
3.让代码相对应工作簿是独立的,因为之后要复制该功能到很多别的工作部应用,别的工作簿就不一定是显示在j列了,如应到“零星”工作簿的L列
4.当j列的下一列(k列)的内容为空时,j列位置的内容不延伸到下一列,即j2的内容设置为向左缩进的时候不延伸到后面列(该效果仅对j列有效)
模拟效果如下
j15显示如下:
有梁板砼 C25、有梁板模板、圈梁砼 C20、圈梁模板、(砼墙面)仿石漆(格)、滴水线@栏杆基脚C20、基脚模板、(砼墙面)外墙马赛克、阳台基脚内面、阳台基脚顶面、阳台露台栏杆(装配式铁艺栏杆)H=1100@栏板C25、栏板模板、(砼墙面)外墙马赛克、阳台栏板内面
j45:
显示为空,因为之间无带“·”号的数据
j46:
有梁板C30、有梁板C25、(线条等二次构件或小形构件)砼、栏杆基脚C20、(基脚)线条模板、基脚模板、有梁板模板、(线条等二次构件或小形构件)模板、线条外墙马赛克、(砼墙面)外墙马赛克、阳台基脚顶面、阳台基脚内面、阳台梁底滴水线(5cm外墙马赛克)、阳台露台栏杆(装配式铁艺栏杆)H=1100
j65:
显示为空,因为他是最后一个类似的数据

华(科15)试验5(vba)(3.发稿).rar

64.38 KB, 下载次数: 4

回复

使用道具 举报

发表于 2016-4-9 19:00 | 显示全部楼层
2.不是以按钮的形式来显示j列的数据,以实时显示的方式,就是说有内容改变就做自动显示新内容"
3.让代码相对应工作簿是独立的,因为之后要复制该功能到很多别的工作部应用,别的工作簿就不一定是显示在j列了,如应到“零星”工作簿的L列
以上两方面的要求一方面已超出了我的能力范围,,另一方面也超出了原贴要求,
没有万能的程序,加上你的工作表结构真的让不专业的人员看得头晕。
爱莫能助,另开贴请高手回答吧

回复

使用道具 举报

 楼主| 发表于 2016-4-9 19:53 | 显示全部楼层
lichuanboy44 发表于 2016-4-9 19:00
2.不是以按钮的形式来显示j列的数据,以实时显示的方式,就是说有内容改变就做自动显示新内容"
3.让代码相 ...

好的,还是谢谢您的回复
回复

使用道具 举报

 楼主| 发表于 2016-4-9 19:56 | 显示全部楼层
lichuanboy44 发表于 2016-4-9 19:00
2.不是以按钮的形式来显示j列的数据,以实时显示的方式,就是说有内容改变就做自动显示新内容"
3.让代码相 ...

您的意思是第一条您已经实现了,如果第一条已经实现的话,麻烦发我下,十分感谢您的回复!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 12:22 , Processed in 0.367409 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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