ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: youyou300

[求助] 从不相连列提取不重复值

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-21 08:02 | 显示全部楼层
uneye2 发表于 2019-1-21 00:50
=IFERROR(TEXTJOIN(",",1,IF(COUNTIF(INDIRECT(D2&"!G8:G11"),INDIRECT(D2&"!D8:D11"))=0,INDIRECT(D2&"!D8 ...

不是太懂为什么在用D2单元格去连接列值。

然后运行你的公式,结果是“”

TA的精华主题

TA的得分主题

发表于 2019-1-21 13:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 uneye2 于 2019-1-21 15:57 编辑

下拉下面公式应该会明白:
=D2&"!G8:G11"

公式只针对附件
捕获.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-22 01:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2019-1-20 12:19
那就是常见的筛选不重复,index+small+if+match,只有两列数据,多一个判断就行;不过你的结果要求合并,需 ...

刚试了一下,当G8:G11有重复地址时,后面不能提取不重复值。

D8:D11可以提取不重复值。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-22 08:40 | 显示全部楼层
PQ小学生 发表于 2019-1-12 10:11
早晨卡在了List.Union上  其实应该不必要这个环节
看这个优化后的
逻辑:

不好意思,你发的附件里没有公式。

TA的精华主题

TA的得分主题

发表于 2019-1-22 09:15 | 显示全部楼层
youyou300 发表于 2019-1-22 08:40
不好意思,你发的附件里没有公式。

我并没有使用公式  而是使用的powerquery  

如图片所示
步骤.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-22 16:36 | 显示全部楼层
PQ小学生 发表于 2019-1-22 09:15
我并没有使用公式  而是使用的powerquery  

如图片所示

好的。非常感谢……

TA的精华主题

TA的得分主题

发表于 2019-1-22 21:57 | 显示全部楼层
看见星光 发表于 2019-1-9 10:57
今天我们的官方微信公众号还在推如何用透视表从多列中提取不重复值呢……

大侠,你好,如果有空,能否提供个解决思路!
拟实现做一个信息总表,包含需要的各类数据,设置好分项子表结构(子表的字段均来自于总表)后,使用公式从总表中得到符合要求的数据,以后只要更改信息总表数据,分项子表数据自动更新。
求助帖子地址:http://club.excelhome.net/thread-1458299-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-23 11:58 | 显示全部楼层
micch 发表于 2019-1-20 12:19
那就是常见的筛选不重复,index+small+if+match,只有两列数据,多一个判断就行;不过你的结果要求合并,需 ...

当G8:G11列有重复地址,最后的提取不能去重。

TA的精华主题

TA的得分主题

发表于 2019-1-23 12:18 | 显示全部楼层
本帖最后由 micch 于 2019-1-23 13:29 编辑
youyou300 发表于 2019-1-23 11:58
当G8:G11列有重复地址,最后的提取不能去重。

哦,那不如干脆分开写两个match,不过还是用别的办法吧,我没有textjoin函数,写出筛选公式,也合并不了;
写个代码吧

  1. Sub test()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Dim arr, brr(99, 2), i%, n%, x$
  4.     For Each sh In Worksheets
  5.         x = sh.Name
  6.         If Left(x, 2) = "差旅" Then
  7.             arr = Worksheets(x).[d8:g11]: d("") = ""
  8.             For i = 1 To 4
  9.                 d(arr(i, 1)) = "": d(arr(i, 4)) = ""
  10.             Next
  11.             brr(n, 0) = x
  12.             brr(n, 1) = Mid(Join(d.keys, "、"), 2)
  13.             brr(n, 2) = d.Count - 1
  14.             d.RemoveAll: n = n + 1
  15.         End If
  16.     Next
  17.     With Worksheets("出差城市")
  18.         .Cells.Clear
  19.         .[a1:c1] = Array("", "出差城市", "城市数量")
  20.         .[a2].Resize(n, 3) = brr
  21.         With .UsedRange
  22.           .HorizontalAlignment = xlCenter
  23.           .VerticalAlignment = xlCenter
  24.           .EntireColumn.AutoFit
  25.           .RowHeight = 22
  26.         End With
  27.     End With
  28. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-24 07:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2019-1-23 12:18
哦,那不如干脆分开写两个match,不过还是用别的办法吧,我没有textjoin函数,写出筛选公式,也合并不了 ...

哈哈,一言不和,就代码了……谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 15:21 , Processed in 0.045200 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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