设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 5336|回复: 12
打印 上一主题 下一主题

Access挑战Excel第二十七期:合并,又见合并

[复制链接]

点击这里给我发消息

1#
发表于 2016-7-17 17:03:36 | 显示全部楼层
Roy,下次这种要祭出代码的,就不要拿出来显摆了,Access有VBA,难道Excel没有VBA么?
  1. Sub Sample()
  2. Dim MyRow As Long, i As Long
  3. Dim MyFind As Range
  4. Range("d1:e1") = Range("a1:b1").Value
  5. i = 1
  6. For MyRow = 2 To 28
  7.     Set MyFind = Range("d:d").Find(Cells(MyRow, 1), , , xlWhole)
  8.     If MyFind Is Nothing Then
  9.         i = i + 1
  10.         Cells(i, 4) = Cells(MyRow, 1)
  11.         Cells(i, 5) = Cells(MyRow, 2)
  12.     Else
  13.         Cells(MyFind.Row, 5) = Cells(MyFind.Row, 5) & ";" & Cells(MyRow, 2)
  14.     End If
  15. Next
  16. Set MyFind = Nothing
  17. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

2#
发表于 2016-7-17 17:47:42 | 显示全部楼层
好吧,你会说代码太复杂,那PowerQuery怎么样?

进入PQ神器以后到转换选项卡下分个组:


至于具体的分组依据……就这样吧,直接确定:


不过您可能会说,这确定以后的……与我们想要的效果半点不搭界啊?
不搭界不要紧,改一下公式就好了。
把原来的
  1. = Table.Group(更改的类型, {"用户ID"}, {{"计数", each Table.RowCount(_), type number}})
复制代码
改成
  1. = Table.Group(更改的类型, {"用户ID"}, {{"结果", each Text.Combine([套餐名称],";")}})
复制代码
就行了,看看是不是这样:


最后上传就好了。


效果都在下面的附件里的,有兴趣就自己打开来看吧。不过!非2016版O365请忽略。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

3#
发表于 2016-7-17 17:52:00 | 显示全部楼层
好吧,我承认,这题确实让我损失不少脑细胞,后来脑细胞不够用了,就找了N个SQL大神请教,最后无果……
然后又想尝试公式=TEXTJOIN(",",1,IF(A$2:A$7=D2,B$2:B$7)),最后又无果……
Roy,你赢了!

点击这里给我发消息

4#
发表于 2016-8-2 12:13:20 | 显示全部楼层
后来LUXS(DiDi9)同学又给出函数解答方法,如附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-5 15:20 , Processed in 0.100822 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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