ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 这个问题太难了,只有大神能解决。我连表述都难表述

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-30 14:36 | 显示全部楼层
高个子 发表于 2023-5-30 14:05
row里面也要改哦。。

是的大佬,我都改了,只是结果就是错误。主要是你这操作水平有点高,里面的行算法逻辑,我一直没搞明白。这是我改完后的函数=INDEX(A$2:A$96,SUM(1,N(ROW(A1)>MMULT(N(ROW($2:$96)>COLUMN($A:$F)),-INT(-$B$2:$B$96/20))))),把7改成96后,就报错了

TA的精华主题

TA的得分主题

发表于 2023-5-30 14:43 | 显示全部楼层
kingdom119 发表于 2023-5-30 14:36
是的大佬,我都改了,只是结果就是错误。主要是你这操作水平有点高,里面的行算法逻辑,我一直没搞明白。 ...

你如果要用这个,column里面也要改,95列是cq,不方便,用我后面写的那个就比较方便改了

=INDEX(A$2:A$96,SUM(1,N(ROW(A1)>MMULT(N(ROW($2:$96)>COLUMN($A:$cq)),-INT(-$B$2:$B$96/20)))))

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-30 15:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高个子 发表于 2023-5-30 14:43
你如果要用这个,column里面也要改,95列是cq,不方便,用我后面写的那个就比较方便改了

=INDEX(A$2:A ...

大佬,你太牛了,这段函数是确定行号,但是这是什么逻辑:SUM(1,N(ROW(A1)>MMULT(N(ROW($2:$96)>COLUMN($A:$CQ)),-INT(-$B$2:$B$96/20))))

TA的精华主题

TA的得分主题

发表于 2023-5-30 16:36 | 显示全部楼层
像这种问题公式能写,但是很不方便,因为你如果把判断A列究竟有多少内容加进去,你公式就会非常的长,而且还要自己拖动,不方便。

这个问题只需要写个简单的代码,你插入模块执行一下,你不想保存为xlsm格式你执行了代码后移除模块就好,我认为是最简单的方法之一。
123.png
  1. Sub NumRept()
  2.     Dim i%, j%, k%
  3.     Range("f2:g1048576").ClearContents
  4.     For i = 2 To Range("a1048576").End(3).Row
  5.         For j = 1 To -Int(-Cells(i, 2) / 50)
  6.             k = Range("f1048576").End(3).Row + 1
  7.             Cells(k, 6) = Cells(i, 1)
  8.             Cells(k, 7) = Application.WorksheetFunction.Min(50, Cells(i, 2) - 50 * j + 50)
  9.         Next
  10.     Next
  11. End Sub
复制代码
小代码.zip (19.04 KB, 下载次数: 6)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-30 20:15 | 显示全部楼层
本帖最后由 jisijie630 于 2023-5-30 20:21 编辑

D2:

=MID(CONCAT(REPT(A$2:A99,CEILING(B$2:B99/50,1))),ROW(A1),1)

=INDEX(A:A,INT(SMALL(IF(COLUMN(A:J)<=CEILING(B$2:B99/50,1),ROW($2:99)/1%+COLUMN(A:J),9999),ROW(A1))/100))&""

E2:

=IF(D2="","",MIN(SUMIF(A:A,D2,B:B)-SUMIF(D$1:D1,D2,E$1),50))

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-30 21:05 来自手机 | 显示全部楼层
本帖最后由 shaowu459 于 2023-5-30 21:07 编辑

供参考:
=REDUCE({"型号","数量"},A2:A5,LAMBDA(x,y,VSTACK(x,IF({1,0},y,BYROW(WRAPROWS(SEQUENCE(OFFSET(y,,1)),50),LAMBDA(z,COUNT(z)))))))
mmexport1685451841766.png mmexportb267697a1c5bf9f50e5e388159592947_1685451850933.png mmexport9c6c0408c6333bcf2d64911d327e4fc8_1685451854067.png
中间部分有不同的写法,这里用一个不除以不mod的方式

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-30 21:42 | 显示全部楼层
PQ方法,供参考。

image.png
image.png

已添加自定义 = Table.AddColumn(源, "自定义", each if [列2]>50 then
                                    {List.Repeat({50},Number.RoundDown([列2]/50)),
                                    {Number.Mod([列2],50)}} else {{[列2]}}),

其实就中间这部分是需要写,其他都是点击鼠标完成。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-30 21:59 | 显示全部楼层
楼主是 OFFICE2019 , 考虑用VBA吧,如果是用365是最好解的,也是一步到位

  1. Sub niko()
  2.     Dim i As Integer, j As Integer, k As Integer
  3.     Dim lastRow As Long
  4.     lastRow = Cells(Rows.Count, 1).End(xlUp).Row
  5.     Range("D2:E" & lastRow + 10).ClearContents
  6.     For i = 2 To lastRow
  7.         For j = 1 To -Int(-Cells(i, 2) / 50)
  8.             k = Range("D" & Rows.Count).End(xlUp).Row + 1
  9.             Cells(k, 4) = Cells(i, 1)
  10.             Cells(k, 5) = Application.WorksheetFunction.Min(50, Cells(i, 2) - 50 * (j - 1))
  11.         Next j
  12.     Next i
  13. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-30 22:28 | 显示全部楼层
solextrade 发表于 2023-5-30 11:15
D2 =INDEX(A:A,SMALL(IF((B$2:B$6>{0,50}),ROW($2:$6),99),ROW(A1)))&""
E2 =MEDIAN(,50,VLOOKUP(D2,A:B,2 ...

老师,您的第一个公式有点小问题,公式没办法完全呈现结果,假设A7输入F,B7输入165

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-31 11:00 | 显示全部楼层
本帖最后由 象山海鲜 于 2023-5-31 11:03 编辑

区域数组
  1. =IFERROR(INDEX(IF({1,0},A:A,50-ROW(1:50)+1),MID(SMALL(IF(B2:B666>(COLUMN(A:Z)-1)*50,ROW(10002:10666)/1%%+DDB(COLUMN(A:Z)*50,B2:B666,1,1)+1),ROW(1:888)),{2,6},4),{1,2}),"")
复制代码

可自己调节数
截断最大值     50 (最大9999)
取值行号       666 (最大9999)
展现个数       888  (最大整列显示)
每个数最多分的个数 26 (Z)【 可调整 COLUMN(A:Z) 的 列数Z的值】

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-16 18:55 , Processed in 0.046595 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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