Excel精英培训网

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

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

[复制链接]
发表于 2016-4-8 15:19 | 显示全部楼层 |阅读模式
本帖最后由 花小剑 于 2016-4-12 21:34 编辑

J列的显示以下内容(1.2.3之前某大师已经帮我实现,下载增加功能4.5.6,7拜托各位了)

1.当Bx上一个含“·”号时jx的内容要会等于Dx的内容到Dy(By下一个含“·”号)的内容的全部合并(用、号隔开内容)注:两个“·”之间的行数是任意的为0~100行。例如:j2、j17、、、、
2.如果Bx不含“·”号时jx的内容要等于Dx的内容。例如:j3、j4、j5
3.fx为空时jx为空,单fx不为空则jx内容填充为就近内容。例如:j10到j13、j20到j24
4.B15这种情况在j16处显示的内容为j17、j30、j41内容和(即两个类似的b16单元格之间带“·”的行的j列的内容和(用@号隔开))注:两个类似的b16(如b16、b48、b49、b68)单元格之间行数是任意的为0~500行:,但是最后一个显示为空。(即j68显示为空)模拟的结果在k列,注意16和49行j列和k列的不同

注:B16对比B8的特点是在f列无数据,B15不一定为红色,这里涂成红色是为了方便您查看。
5.不是以按钮的形式来显示j列的数据,以实时显示的方式,就是说有内容改变就做自动显示新内容。
6.让代码相对应工作簿是独立的,因为之后要复制该功能到很多别的工作部应用,别的工作簿就不一定是显示在j列了,如应到“零星”工作簿的L列
7.当j列的下一列(k列)的内容为空时,j列位置的内容不延伸到下一列,即j2的内容设置为向左缩进的时候不延伸到后面列(该效果仅对j列有效)
上诉效果得对表格后期添加类似内容或者插入、复制、剪切整行仍然有效,当然能对列的插入、复制、剪切整行也有效那是最好的,不行的话也可以

最佳答案
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)))
这样的?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-4-8 15:53 | 显示全部楼层
=IF(COUNTA(B2:H2)<3,"",IF(LEFT(B2)="·",PHONETIC(INDIRECT("D"&ROW()&":D"&MIN(IF(LEFT(B3:B100)="·",ROW(A3:A100),9999)))),LOOKUP(1,0/(D$2:D2<>""),$D$2:D2)))
數組公式

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

83.6 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2016-4-8 15:57 | 显示全部楼层
第一条中的“内容的全部合并(用、号隔开内容)“这个可以不要!大神们帮帮忙,重要的是注:两个“·”之间的行数是任意的为0~100行。
回复

使用道具 举报

发表于 2016-4-8 16:07 | 显示全部楼层
本帖最后由 lichuanboy44 于 2016-4-8 16:08 编辑

vba代码,调试好像成功了。
  1. Sub try()
  2. Dim br()
  3. n = Range("F65536").End(3).Row
  4. arr = Range("B2:F" & n)
  5. ReDim br(1 To n - 1, 1 To 1)
  6. For i = 1 To n - 1
  7.    a = arr(i, 1): b = arr(i, 3): c = arr(i, 5)
  8.    If a Like "·*" Then
  9.       If i > 1 Then
  10.          br(p, 1) = Mid(ss, 2, Len(ss) - 1)
  11.          ss = "": s上 = ""
  12.       End If
  13.       p = i
  14.    End If
  15.    If b <> "" Then
  16.      br(i, 1) = b
  17.      ss = ss & "、" & b
  18.      s上 = b
  19.    ElseIf b = "" And c <> "" Then
  20.       br(i, 1) = s上
  21.    End If
  22. Next
  23. [J2].Resize(n - 1, 1) = br
  24. End Sub
复制代码

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

78.56 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-4-8 16:48 | 显示全部楼层
本帖最后由 花小剑 于 2016-4-10 12:07 编辑
lichuanboy44 发表于 2016-4-8 16:07
vba代码,调试好像成功了。

非常感谢您的回复,好厉害!,可是有两个就是
1.j197(最后一个带”·“)的单元格不正常,

2.如果遇到我新发的这个压缩包的第十六行(这行对比8行的特点是f列无内容,8行显示的是符合的)的单元格使得j16的内容等于靠近它的下一个不为空单元格的内容,即j16显示的内容为j17,j29显示的内容为j31,

第二个可能有点难度,如果第二个实在实现不了就算了,第一个实现的话也麻烦发我下,拜托了,非常感谢您!
回复

使用道具 举报

 楼主| 发表于 2016-4-8 16:54 | 显示全部楼层
lichuanboy44 发表于 2016-4-8 16:07
vba代码,调试好像成功了。



非常感谢您的回复,好厉害!,可是有两个就是
1.j197(最后一个带”·“)的单元格不正常,

2.如果遇到我新发的这个压缩包的第十六行(这行对比8行的特点是f列无内容,8行显示的是符合的)的单元格使得j16的内容等于靠近它的下一个不为空单元格的内容,即j16显示的内容为j17,j29显示的内容为j31,

第二个可能有点难度,如果第二个实在实现不了就算了,第一个实现的话也麻烦发我下,拜托了,非常感谢您!

计算原稿(科15)试验5(论坛回复).rar

48.65 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2016-4-8 17:01 | 显示全部楼层
本帖最后由 花小剑 于 2016-4-10 12:07 编辑
心正意诚身修 发表于 2016-4-8 15:53
=IF(COUNTA(B2:H2)

好厉害,能将excel函数用到这种地步真是非常了不起啊!有点小的不足就是如果遇到我新发的这份第16行(和第8行对比第16行的特点是f列无内容)的单元格时显示为空,(或者让它显示为靠近它的下一个非空单元格的内容即j17,能实现这个是最好的,不行的话让j16显示为空也是行的),拜托了,非常感谢您!
回复

使用道具 举报

发表于 2016-4-8 17:04 | 显示全部楼层
花小剑 发表于 2016-4-8 17:01
好厉害,能将excel函数用到这种地步真是非常了不起啊!有点小的不足就是如果遇到我新发的这份第16行(和第 ...

我還有兩分鐘就下班了。然後吃飯。
晚飯後。另外一位VBA老師如果沒有給你新的解法。我再看看。

回复

使用道具 举报

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

恩好的,快去吃饭吧,你们两个都好厉害,一个是函数一个是VBA,厉害厉害!佩服佩服!
回复

使用道具 举报

 楼主| 发表于 2016-4-8 17:16 | 显示全部楼层
花小剑 发表于 2016-4-8 16:48
非常感谢您的回复,好厉害!,可是有两个就是
1.j197(最后一个带”·“)的单元格不正常,

非常期待您的回复
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 09:15 , Processed in 0.484380 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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