ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: solextrade

[讨论] 内存数组三之百姓菜篮子

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-11-7 21:20 | 显示全部楼层
本帖最后由 dipperrrr 于 2019-11-7 21:24 编辑

开始没看明白小项的排序,稍后修改。
  1. =VLOOKUP(INDIRECT(TEXT(MOD(SMALL(IF(COUNTIF($A:$A,$H$2:$M$8),MATCH($H$2:$H$8,$A:$A,)+(ROW($2:$8)/1%+COLUMN($H:$M))%%),ROW(A1)),1)/1%%,"r0c00"),),$A:$B,COLUMN(A1),)
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-7 21:26 | 显示全部楼层
dipperrrr 发表于 2019-11-7 21:20
开始没看明白小项的排序,稍后修改。

D大师的VLOOKUP炉火纯青了!
严格来讲,公式没有达到  ”其他商品 维持 从上到下出现的顺序 不变“ 的要求。
但此公式很精彩了,必须收藏。


TA的精华主题

TA的得分主题

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

=INDEX(A:A,SUBSTITUTE(TEXT(MOD(SMALL(IF(COUNTIF($A:$A,$H$2:$M$8),MATCH($H$2:$H$8,$A:$A,)*100.01+MATCH($H$2:$M$8,$A:$A,)*(COLUMN($H:$M)>8)),ROW(1:21)),100),"[<1]0%"),"%",)

D2:D22,右拉


D2:E22
  1. =INDEX(A:B,SUBSTITUTE(TEXT(MOD(SMALL(IF(COUNTIF(A:A,H2:M8),MATCH(H2:H8,A:A,)*100.01+MATCH(H2:M8,A:A,)*(COLUMN(H:M)>8)),ROW(1:21)),100),"[<1]0%"),"%",),{1,2})
复制代码

区域数组,能少很多字符,(*^▽^*)

  1. =INDEX(A:B,SUBSTITUTE(TEXT(MOD(SMALL(IFNA(MATCH(H2:H8,A:A,)*100.01+MATCH(H2:M8,A:A,)*(COLUMN(A:F)>1),1=1),ROW(1:21)),100),"[<1]0%"),"%",),{1,2})
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-7 22:07 | 显示全部楼层
我只会写D列的公式,E列用vlookup吧。劣质答案,纯粹证明我来捧场。
=INDIRECT(TEXT(TRIM(MID(SUBSTITUTE(TEXTJOIN(",",1,IFERROR(1/(1/MOD(SMALL(IF(ISNUMBER(MATCH(H$2:M$8,A:A,)),ROW($2:$8)/1%+COLUMN(H:M))-10^RIGHT(SMALL(MATCH(H$2:H$8,A:A,)*10+12-ROW($3:$9),ROW($1:$7))),ROW($1:$42)),1000)),"")),",",REPT(" ",99)),ROW(A1)*99-98,99)),"r0c00"),)

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-7 22:18 | 显示全部楼层
研究了好一会儿,思路好像差不多,区域数组:

=INDEX(A:B,MOD(SMALL(IF(COUNTIF(OFFSET(H2:M2,{0,1,2,3,4,5,6},),A2:A22),(TRANSPOSE(MATCH(H2:H8,A2:A22,))/1%-COUNTIF(H2:H8,A2:A22))/1%+ROW(2:22)),ROW(1:21)),100),{1,2})

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-7 22:59 | 显示全部楼层
本帖最后由 dipperrrr 于 2019-11-8 10:13 编辑
  1. =INDEX(A:A,RIGHT(SMALL(IFNA(MATCH($H$2:$H$8,$A:$A,)/1%%+MATCH($H$2:$M$8,$A:$A,)*($H$2:$M$8<>$H$2:$H$8)/1%+MATCH($H$2:$M$8,$A:$A,),1=0),ROW(A1)),2))
复制代码

没想周全,第三个match多余了。不改了。

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-7 23:27 | 显示全部楼层
本帖最后由 micch 于 2019-11-8 00:21 编辑
  1. =INDEX(A:B,MOD(SMALL(IFNA(MATCH(H2:H8,A:A,)/1%+MATCH(H2:M8,A:A,)*({0,1,1,1,1,1}+1%),1=1),ROW(1:21)),1)/1%,{1,2})
复制代码

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-8 09:29 | 显示全部楼层
本帖最后由 象山海鲜 于 2019-11-8 09:46 编辑
  1. =INDEX(A:B,MOD(SMALL(IFNA(MATCH(H2:H8,A:A,)/1%%+MATCH(H2:M8,A:A,)-(H1:M1=H1)/1%,""),ROW()-1),50),{1,2})
复制代码
  1. =INDEX(A:B,SECOND(SMALL(IFNA(TIME(MATCH(H2:H8,A:A,),H1:M1<>H1,MATCH(H2:M8,A:A,)),""),ROW()-1)),{1,2})
复制代码
  1. =INDEX(A:B,DAY(SMALL(IFNA(DATE(MATCH(H2:H8,A:A,),H1:M1<>H1,MATCH(H2:M8,A:A,)),""),ROW()-1)),{1,2})
复制代码

评分

15

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-8 09:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

之前我还在感慨你对于H1:M1点睛般的利用,结果又出个神来之笔,天外飞仙啊.

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-8 09:45 | 显示全部楼层

海版公式天下无敌!101!!!

没花了,先欠着哈。

点评

你数错了!  发表于 2019-11-8 09:48
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-24 23:46 , Processed in 0.025835 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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