前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >这种合并单元格,PQ真的处理不了!又没学过VBA,怎么办!

这种合并单元格,PQ真的处理不了!又没学过VBA,怎么办!

作者头像
大海Power
发布于 2024-03-25 01:45:01
发布于 2024-03-25 01:45:01
37100
代码可运行
举报
运行总次数:0
代码可运行

导语:Power Query是无法识别合并单元格的,在一般情况下,也可以直接通过向下填充的方式补充好数据的,但是,有些特殊的情况,Power Query是真的无能为力!

最近在项目上碰到个Excel数据源带合并单元格的情况,直接把Power Query给“噎”住了:

这种情况下,如果直接将数据加载到Power Query,合并单元格会直接被“无视”,而将合并单元格中的值放在其第一个单元格中:

这时,会导致合并单元格及其下方非合并空白单元格无法区分!

而且,这个问题要单纯通过Power Query来处理——“无解”!为这个事情我还问了ChatGPT

那如果不幸真碰到这种情况,怎么办呢?

只能借助VBA了——但是,不懂VBA怎么办?

不用担心,我也早把VBA差不多忘光光了,但是,ChatGPT可以继续为我们提供答案:

程序给出来了,赶紧试一下,可惜不对——它把下面的单元格都给填了:

怎么办呢?当然要纠正ChatGPT对问题的理解,于是继续对话,“只要填充原合并单元格的所有单元格,不要填充非合并单元格的单元格”,程序很快改好:

投入测试,搞定!真是太牛了!

附程序代码如下,以后直接复制过去用即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub UnmergeAndFill()
    Dim ws As Worksheet
    Dim rng As Range
    Dim mergedCells As Range
    Dim cell As Range
    ' 设置要操作的工作表
    Set ws = ActiveSheet
    ' 循环遍历所有的合并单元格
    For Each rng In ws.UsedRange
        If rng.MergeCells Then
            ' 记录合并单元格范围
            If mergedCells Is Nothing Then
                Set mergedCells = rng
            Else
                Set mergedCells = Union(mergedCells, rng)
            End If
        End If
    Next rng
    ' 取消所有合并单元格
    If Not mergedCells Is Nothing Then
        mergedCells.UnMerge
    End If
    ' 填充数据
    For Each cell In mergedCells
        If cell.Value = "" Then
            cell.Value = cell.Offset(-1, 0).Value
        End If
    Next cell
End Sub

经过VBA处理这么一下后,后续就可以用Power Query进行处理了。

回看这个简单的问题,细思极恐,未来AI会进化到什么程度?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常用功能加载宏——单元格合并
使用Excel,单元格合并是常用的功能,系统带的合并功能是仅仅保留左上角唯一一个单元格的内容,实际工作中可能会存在需要合并单元格,同时要把内容也合并的需求。
xyj
2020/07/28
7100
常用功能加载宏——单元格合并
VBA实用小程序75:选择所有的合并单元格
在使用VBA操作单元格时,合并的单元格可能会导致问题,甚至在工作表中进行一些操作时,合并的单元格也可能会导致错误。因此,如果我们能够识别合并的单元格,就可以确定对它们采取的操作。
fanjy
2021/05/07
1.2K0
常用功能加载宏——快速定位合并单元格
在Excel表格里,合并单元格会给使用过程带来很多麻烦,但是有时候为了排版好看,又需要用到合并的功能。
xyj
2020/07/28
1.8K0
常用功能加载宏——快速定位合并单元格
ExcelVBA批量合并或取消单元格
【问题】烦人的合并单元格,我们在进行vlookup、sum等计算中最怕就是遇到神人交过来的表格,
哆哆Excel
2022/10/25
2.2K0
ExcelVBA批量合并或取消单元格
EXCEL取消合并且等于原合并值
方法一: 选中有合并单元格的区域, 例如:B4:B69,取消合并,然后在选中状态下\编辑\定位\定位条件\空值,确定后会在B5出现反白,输入等号后点B4,按住CTRL键回车. 方法二: Sub 取消合并且等于原合并值() If Selection.Count = 1 Then MsgBox "请选择合并单元格再执行本工具!", 64, "友情提示": Exit Sub Application.ScreenUpdating = False On Error GoTo err
用户1272546
2018/06/04
7000
VBA实战技巧27:根据颜色汇总单元格数据
本文给出了一种根据单元格背景色汇总单元格数据的方法:使用VBA创建一个自定义函数来实现该目的。
fanjy
2021/07/12
1.7K0
VBA实战技巧27:根据颜色汇总单元格数据
Excel小技巧91:合并单元格且不丢失数据
有时候,我们需要合并多个单元格,然而,当选择要合并的单元格,并使用“合并单元格”命令后,Excel会给出如下图1所示的提示,只保留左上角单元格中的数据。
fanjy
2021/08/31
5.6K0
Excel小技巧91:合并单元格且不丢失数据
Excel VBA 自动填充空白并合并相同值的解决方案
在Excel中经常会遇到这样的数据处理需求:一列数据中存在多个空白单元格,需要用其上方最近的非空值填充,然后将相同的连续值合并成一个单元格。比如:
洛秋_
2024/12/31
2450
常用EXCEL宏FUNCTION 2020.11.20「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144014.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
1.1K0
ExcelVBA运用Excel的【条件格式】(五)
FormatConditions.Add`方法在VBA中用于向工作表上的某个范围添加新的条件格式规则。这个方法是`FormatConditions`集合的一个成员,而`FormatConditions`集合属于`Range`对象。这意味着你必须首先选定一个范围,然后才能调用`Add`方法来添加条件格式。
哆哆Excel
2024/07/25
3190
ExcelVBA运用Excel的【条件格式】(五)
VBA技术:你需要知道的一些VBA操作形状的代码
在Excel中,可以通过功能区“插入”选项卡“插图”组中的“形状”库按钮在工作表中插入形状。可以使用形状来可视化数据、在形状中添加文本、作为执行宏代码的按钮,等等。
fanjy
2023/02/24
4.9K0
VBA技术:你需要知道的一些VBA操作形状的代码
VBA实用小程序63: 查找并返回与指定属性匹配的所有单元格
本文介绍的VBA程序是一个自定义函数,整理自jkp-ads.com,很好地增强了内置的CallByName函数的适用性。
fanjy
2020/11/09
1.5K0
VBA实用小程序63: 查找并返回与指定属性匹配的所有单元格
VBA实战技巧01: 在代码中引用动态调整单元格区域的5种方法
在VBA代码中,经常要引用单元格数据区域并对其进行操作。然而,如果对数据区域采用“硬编码”地址,那么当该区域大小变化时,必须修改相应的引用该区域的代码。本文整理了可以动态引用数据区域的5种方法,供编写代码时参考。
fanjy
2020/02/12
4.9K0
VBA实用小程序74:将合并单元格转换为跨列居中
“合并后居中”按钮是Excel界面中一个非常方便的功能,很多人都喜欢使用合并单元格。然而,对合并单元格进行一些操作会带来一些问题,Excel会给出下图1所示的提示消息。
fanjy
2021/05/07
2.6K0
VBA: 通过Application.OnTime定时执行程序(2)
文章背景: 上文(参见文末的参考资料[1])提到,创建了一个自定义函数,可以获取指定路径下各个文件的最新的修改日期。另外,提供了一份VBA代码,可以遍历各个单元格,假装对单元格内的内容进行编辑,借助Application.OnTime函数定时执行该程序。
Exploring
2024/04/15
9230
VBA: 通过Application.OnTime定时执行程序(2)
VBA专题11:详解UsedRange属性
UsedRange属性是Worksheet对象的一个有用的属性,可以返回工作表中已使用的单元格区域。实际上,根据UsedRange的意思,我们就可以明白,该属性代表工作表中已使用的区域,不仅包括可以看到内容的单元格,而且不包括应用了格式、添加批注或其他一些修改的单元格。我们可以使用UsedRange属性来操控Excel工作表数据。
fanjy
2021/06/01
8.4K0
VBA专题11:详解UsedRange属性
VBA对象变量
大家好,前面介绍了vba中两个主要的对象,单元格range对象和工作表worksheet对象,以及它们的属性和方法。
无言之月
2019/10/13
2K0
VBA程序:查找并列出指定工作表中所有合并单元格的地址
运行下面的VBA过程,将列出当前工作表中所有合并单元格的地址。程序会新建一个工作表并重命名,然后在其中输入所有合并单元格的地址。
fanjy
2024/03/11
2980
VBA程序:查找并列出指定工作表中所有合并单元格的地址
C# 实现完善 Excel 不规则合并单元格数据导入
在我的文章 《C#实现Excel合并单元格数据导入数据集》里讲述了可以将具有合并单元格的Excel文件数据导入到DataSet里,在实际使用情况中遇到如下情况,如下图:
初九之潜龙勿用
2025/02/20
1390
C# 实现完善 Excel 不规则合并单元格数据导入
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.4K0
Excel VBA编程
推荐阅读
相关推荐
常用功能加载宏——单元格合并
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验