AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-440902

Darren Bartrup-Cook's questions

Martin Hope
Darren Bartrup-Cook
Asked: 2025-02-18 23:11:50 +0800 CST

开始日期和结束日期之间按顺序编号的周数

  • 5

我有这个示例数据: 在此处输入图片描述

  • 范围内的数据B1:I1来自以下公式: =SEQUENCE(,8,DATE(2025,1,25),7)。

  • 完整公式可能从 2024 年 12 月 28 日起持续 53 列 - 7 天的间隔为 2025 年每个星期六的开始日期。

  • A 列中的值是手动输入的(d/m/y格式的变体):

     2/2/25-16/2/25, 
     02/03/2025-16 Mar 25
    
     25/1/25-25/1/25,
     15/03/25-15/03/25
    

问题:
我想要做的是按顺序对 A 列中日期范围涵盖的每个星期进行编号,除非存在六周的间隔,在这种情况下编号应该再次从 1 开始。

此公式会将单元格中的值转换A2为实际日期: =DATEVALUE(TEXTSPLIT(CLEAN(A2),"-",","))

或者这将返回一周的星期六的开始和星期五的结束:

=LET(AllDates,DATEVALUE(TEXTSPLIT(CLEAN(A2),"-",",")),
     StartDates,CHOOSECOLS(AllDates,1)+1-WEEKDAY(CHOOSECOLS(AllDates,1)+1,1),
     EndDates,CHOOSECOLS(AllDates,2)+1-WEEKDAY(CHOOSECOLS(AllDates,2)+1,1)+6,
     HSTACK(StartDates,EndDates))

该公式=BYCOL($B$1#,LAMBDA(ThisDate,IF(AND(ThisDate>=$A5,ThisDate<=$B5),1,"")))会在一组日期的正确星期下添加 1。这里A5和B5是我的日期公式返回的前两个日期。

在此处输入图片描述

我无法将所有内容都放到一个整齐的公式中,更不用说连续编号了。如果我可以添加公式B2并拖拽,那就太好了。

欢迎任何建议。

microsoft-excel
  • 2 个回答
  • 69 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2023-08-24 20:43:45 +0800 CST

根据每日收到的金额和每日处理的金额计算清除数量的时间

  • 5

我有这个数据表,其中包含每天的退货数量(Ret Volume)和每天已处理的退货数量(Volume Cleared)。
我想要的是右侧显示的日期,显示已处理退货的天数。

在此输入图像描述

例如,8 月 1 日,我们收到了 472 份退货,其中 462 份已处理,剩下 10 份仍在等待。
第二天,我们收到了 380 份退货,并处理了其中 370 份。前 10 个处理的订单来自前一天,因此第一天的所有退货都会在第二天处理。

我对公式的第一次尝试如下(转置仅在那里,以便我可以检查每天的返回值而不会出现 #SPILL 错误): =TRANSPOSE(LAMBDA(ReturnedVolume,ClearedVolume,BYROW(ClearedVolume,LAMBDA(ClearedToday,SUM(ReturnedVolume)-SUM(ClearedVolume)>ClearedToday)))($F$3:$F3,$H$3:$H3))
这总是返回 FALSE 我认为因为 8 月 2 日它正在计算 852-832= 20>370 = FALSE 。

我开始觉得我现在只见树木不见森林了。

microsoft-excel
  • 2 个回答
  • 52 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2022-04-27 01:39:40 +0800 CST

交错(合并)两个溢出的范围

  • 6

我正在尝试合并两个大小相等的溢出范围,以便溢出范围 A 的第一列位于溢出范围 B 的第一列旁边。

我已经接近答案了,但与此同时,我有一种感觉,我正在以完全错误的方式去做。

例如:
在A1输入公式=SEQUENCE(3,2,1)。
在A5输入公式=CHAR(SEQUENCE(3,2,65))

这将给出以下两个范围。我追求的结果在第 9:11 行。
在此处输入图像描述

我的想法是用FILTERXML.

这将连接两个范围并开始构建 xml 字符串(在 cell 中输入F1):

=LET(ColumnNum,COLUMN(A1#),
     FirstTable, A1#,
     SecondTable, A5#,
     PrefixA, "<a" & ColumnNum & ">",
     SuffixA, "</a" & ColumnNum & ">",
     PrefixB, "<b" & ColumnNum & ">",
     SuffixB, "</b" & ColumnNum & ">",
     xml, PrefixA & FirstTable & SuffixA &
          PrefixB & SecondTable & SuffixB,
     xml)  

这完成了 xml 并返回最终溢出的范围。

=LET(StartCol,COLUMN(F1),
     xml,F1#,
     LastCol,StartCol+COLUMNS(xml)-1,
     finalxml,"<y>" & TEXTJOIN("",FALSE,IF(COLUMN(xml)=StartCol,"<x>","") & xml & IF(COLUMN(xml)=LastCol,"</x>","")) & "</y>",
     CHOOSE(SEQUENCE(,COLUMNS(xml)*2,1),
            FILTERXML(finalxml,"//x/a1"),
            FILTERXML(finalxml,"//x/b1"),
            FILTERXML(finalxml,"//x/a2"),
            FILTERXML(finalxml,"//x/b2")))  

这适用于两列的两个范围,但列数会改变,因此CHOOSE每次都需要手动更新语句。

有没有办法让这个工作?乐于采取LAMBDA解决方案,但怕我不能使用新TEXTSPLIT类型的功能。

microsoft-excel worksheet-function
  • 2 个回答
  • 315 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2021-09-02 05:48:23 +0800 CST

使用 FilterXML 添加空白

  • 7

我已经改写了这个问题,因为第一次没有回应......也许它有点罗嗦。

我的原始数据如下。
注意 - 这只是测试数据,在我的文件中,它是从公式创建的溢出范围(请参阅公式以从该公式的溢出范围中的两个数据集创建笛卡尔积)

日期 文本
29/08/2021 一个
29/08/2021 乙
29/08/2021 C
2021 年 8 月 30 日 一个
2021 年 8 月 30 日 乙
2021 年 8 月 30 日 C

我使用这些公式将 XML 标记添加到数据中(注意:这!null!部分是我的问题所在):
日期: ="<a>" & IF($B$4:$B$9=OFFSET($B$4:$B$9,-1,0),"!null!",$B$4:$B$9) & "</a>"
文本: ="<b>" & $D$4:$D$9 & "</b>"

在此处输入图像描述

然后FILTERXML将结果转换为两列溢出范围。

=LET(xml,"<y><x>" & TEXTJOIN("",FALSE,D3#,E3#) & "</x></y>",
     x,"//x/a",
     y,"//x/b",
     CHOOSE({1,2},FILTERXML(xml,x),FILTERXML(xml,y)))  

在此处输入图像描述

如何更改!null!实际空单元格的位置标记?
"", "&#0;","<a></a>"以及我尝试过的任何其他内容都会返回#VALUE!错误。

回答:

@HasanNahiyanNobel 给出的答案给了我使用SUBSTITUTE. 就其本身而言,它会导致日期显示为其数值,并且格式化单元格不会影响这一点。使用TEXT围绕FILTERXML提供日期的格式对问题进行排序。

我的最终公式是:

=LET(xml,"<y><x>" & TEXTJOIN("",FALSE,Z4#,AA4#) & "</x></y>",
           x,"//x/a",
           y,"//x/b",
           CHOOSE({1,2},TEXT(SUBSTITUTE(FILTERXML(xml,x),"!null!",""),"dd-mmm"),FILTERXML(xml,y)))
microsoft-excel worksheet-function
  • 1 个回答
  • 207 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2021-08-28 04:24:00 +0800 CST

从溢出范围内的两个数据集创建笛卡尔积的公式

  • 7

我正在寻找一个公式,该公式将从两组数据中创建一个笛卡尔积,其中任何一组数据都可以增长或缩小。

@ScottCraner 在这篇文章中给出的答案几乎给了我答案,除了它没有像预期的那样溢出。
Excel - 列 a 和列 b 的每个组合到列 d 和 e

我不是在寻找 PowerQuery 或 VBA 解决方案 - PQ 涉及信任员工按下Refresh,VBA 涉及信任员工注意显示“启用宏”的黄色条并理解它的含义。

测试数据: 在此处输入图像描述

在上图中,我试图使用列M:N中的数据获取列中的值A:F。
目前我正在获取J:K.

  • 我的原始数据的缩减版本D位于一个名为Table1的表中的列中。
  • F1=SEQUENCE(EndDate-StartDate+1,,StartDate)包含为我提供开始和结束之间所有日期列表的公式。
  • G1包含公式=UNIQUE(Table1[Process])
  • I1包含公式=SEQUENCE(COUNTA($F$1#)*COUNTA(G1#)),它将溢出给我最终表格中的行数(即我需要溢出多少)。
  • J1包含公式=IF(I1#<>"",INDEX($F$1#,INT(ROW()-1)/COUNTA($G$1#)+1))。
    该Index部分本身将向下拖动并给我 column 中的值M,或者我可以选择范围并使用数组公式也给我值。
    如果我评估单元格中的公式,J4它应该引用单元格F2.... 并且确实如此,但随后返回来自单元格的值F1。
    在此处输入图像描述

我有一种感觉,我在这里遗漏了一些关于溢出范围的基本内容。有任何想法吗?

microsoft-excel worksheet-function
  • 1 个回答
  • 451 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2021-07-08 03:11:08 +0800 CST

使用 PowerQuery 重命名或扩展可变数量的列

  • 5

我有一个如下所示的数据表:

Report Date |   ID      |   Percent
11/06/2021  |   12345   |   0.9
18/06/2021  |   12345   |   1
25/06/2021  |   12345   |   0.85
02/07/2021  |   12345   |   0.5
11/06/2021  |   54321   |   0.77
18/06/2021  |   54321   |   1
25/06/2021  |   54321   |   1
02/07/2021  |   54321   |   0.25

每个日期的每个 ID 都会显示一个百分比值。
有时表格中有四个星期,有时五个取决于支付期限(一个月可能有四到五个星期)。

我有一个查询,按 ID 对数据进行分组,并返回四个星期内的平均百分比数字。

现在,希望无需详细说明,我想将这些日期更改为第 1 周、第 2 周、第 3 周、第 4 周,偶尔也可以更改为第 5 周(我的老板希望在平均值旁边查看各个周)。
如果我旋转表格以便每周成为一列,那么我需要知道列的名称,然后才能展开它:

let
    Source = Table.NestedJoin(#"My Query", {"ID"}, #"Pivotted Table", {"ID"}, "Pivotted Table", JoinKind.LeftOuter),
    #"Reordered Columns" = Table.ReorderColumns(Source,{"ID", "Pivotted Table", "Percent"}),
    #"Expanded Pivotted Table" = Table.ExpandTableColumn(#"Reordered Columns", "Pivotted Table", {"11/06/2021", "18/06/2021", "25/06/2021", "02/07/2021"}, {"11/06/2021", "18/06/2021", "25/06/2021", "02/07/2021"})
in
    #"Expanded Pivotted Table"  

我找到了一个函数,它允许我根据列在表中的位置重命名列,这样我就可以将列名标准化为第 1 周、第 2 周、第 3 周等。这仍然会引发错误,因为偶尔会出现第 5 周。

//Function Name - Rename Columns
let
    RenameColumns = (InputTable as table, ColumnNumbers as list, NewColumnNames as list) =>
let
    OldColumnNames = Table.ColumnNames(InputTable),
    Indexed = List.Zip({OldColumnNames, {0..-1+List.Count(OldColumnNames)}}),
    Filtered = List.Select(Indexed, each List.Contains(ColumnNumbers,_{1})),
    IndexRemoved = List.Transform(Filtered, each _{0}),
    RenameList = List.Zip({IndexRemoved,NewColumnNames}),
    RenamedColumns = Table.RenameColumns(InputTable, RenameList)
in
    RenamedColumns
in
    RenameColumns  

因此,如果没有第六列(第一列是第 0 列),则会引发错误。

//Query Name - Pivotted Table
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Report Date", type date}, {"ID", type text}, {"Percent", type number}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type", {{"Report Date", type text}}, "en-GB"), List.Distinct(Table.TransformColumnTypes(#"Changed Type", {{"Report Date", type text}}, "en-GB")[#"Report Date"]), "Report Date", "Percent"),
    RenameColumns = #"Rename Columns"(#"Pivoted Column",{1,2,3,4,5}, {"Week 1", "Week 2", "Week 3", "Week 4", "Week 5"})
in
     RenameColumns  

问题:

如何重命名或扩展可变数量的列?

microsoft-excel power-query
  • 1 个回答
  • 122 Views
Martin Hope
Darren Bartrup-Cook
Asked: 2021-03-02 03:46:34 +0800 CST

返回对应值大于 0 的第一个日期

  • 6

我有一组数据如下。请注意,并非所有日期都被表示。
在此处输入图像描述

我正在寻找一个 Excel 365 公式,当传递一个示例日期时,它将从表中返回一个早于或等于示例日期的日期,并且相应的值是大于 0 的第一个值。

  • 因此,对于 2 月 1 日至 8 日,公式将返回 01-Feb-21,因为这是表格上的第一个日期。
  • 对于 10 日到 16 日,它将返回 10 日,因为那是值增加到 0 以上的第一个日期。
  • 对于第 17 位到表的末尾,它将返回第 17 位。

我的尝试之一:
=SUMPRODUCT(--(Table1[Date]<=D2),--(Table1[Value]>0),Table1[Date])- 2 月 2 日,前两个日期为真,前两个数字也是如此,因此它将日期加在一起并返回 08-Mar-42。
D2上述公式中包含的日期在 01-Feb 到 25-Feb 的范围内。

我尝试过使用=MIN(IF((Table1[Date]<=D2)*(Table1[Value]>0),Table1[Date],"-"))which 返回 2 月 1 日。

任何帮助将不胜感激。

microsoft-excel worksheet-function
  • 3 个回答
  • 678 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve