Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这种合并单元格,PQ真的处理不了!又没学过VBA,怎么办!

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

作者头像
大海Power
发布于 2024-03-25 01:45:01
发布于 2024-03-25 01:45:01
41500
代码可运行
举报
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA实用小程序74:将合并单元格转换为跨列居中
“合并后居中”按钮是Excel界面中一个非常方便的功能,很多人都喜欢使用合并单元格。然而,对合并单元格进行一些操作会带来一些问题,Excel会给出下图1所示的提示消息。
fanjy
2021/05/07
2.7K0
VBA实用小程序75:选择所有的合并单元格
在使用VBA操作单元格时,合并的单元格可能会导致问题,甚至在工作表中进行一些操作时,合并的单元格也可能会导致错误。因此,如果我们能够识别合并的单元格,就可以确定对它们采取的操作。
fanjy
2021/05/07
1.3K0
ExcelVBA批量合并或取消单元格
【问题】烦人的合并单元格,我们在进行vlookup、sum等计算中最怕就是遇到神人交过来的表格,
哆哆Excel
2022/10/25
2.3K0
ExcelVBA批量合并或取消单元格
常用功能加载宏——单元格合并
使用Excel,单元格合并是常用的功能,系统带的合并功能是仅仅保留左上角唯一一个单元格的内容,实际工作中可能会存在需要合并单元格,同时要把内容也合并的需求。
xyj
2020/07/28
7570
常用功能加载宏——单元格合并
常用功能加载宏——快速定位合并单元格
在Excel表格里,合并单元格会给使用过程带来很多麻烦,但是有时候为了排版好看,又需要用到合并的功能。
xyj
2020/07/28
1.8K0
常用功能加载宏——快速定位合并单元格
Excel VBA 自动填充空白并合并相同值的解决方案
在Excel中经常会遇到这样的数据处理需求:一列数据中存在多个空白单元格,需要用其上方最近的非空值填充,然后将相同的连续值合并成一个单元格。比如:
洛秋_
2024/12/31
6480
VBA程序:查找并列出指定工作表中所有合并单元格的地址
运行下面的VBA过程,将列出当前工作表中所有合并单元格的地址。程序会新建一个工作表并重命名,然后在其中输入所有合并单元格的地址。
fanjy
2024/03/11
4670
VBA程序:查找并列出指定工作表中所有合并单元格的地址
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
7530
VBA: 判断单元格区域内是否存在合并单元格
文章背景: 工作中,有时需要判断单元格区域内是否存在合并单元格,这时,可以用到Range.MergeCells属性。
Exploring
2023/10/22
2.6K0
VBA: 判断单元格区域内是否存在合并单元格
常用EXCEL宏FUNCTION 2020.11.20「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144014.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
1.2K0
Excel小技巧91:合并单元格且不丢失数据
有时候,我们需要合并多个单元格,然而,当选择要合并的单元格,并使用“合并单元格”命令后,Excel会给出如下图1所示的提示,只保留左上角单元格中的数据。
fanjy
2021/08/31
7.7K0
Excel小技巧91:合并单元格且不丢失数据
ExcelVBA运用Excel的【条件格式】(五)
FormatConditions.Add`方法在VBA中用于向工作表上的某个范围添加新的条件格式规则。这个方法是`FormatConditions`集合的一个成员,而`FormatConditions`集合属于`Range`对象。这意味着你必须首先选定一个范围,然后才能调用`Add`方法来添加条件格式。
哆哆Excel
2024/07/25
5470
ExcelVBA运用Excel的【条件格式】(五)
C#实现Excel合并单元格数据导入数据集
将Excel里的worksheet表格导入到DataSet里,是项目应用里常用的一种操作。一般情况下,worksheet是一个标准的二维数组,如下图:
初九之潜龙勿用
2024/06/20
3460
C#实现Excel合并单元格数据导入数据集
C# 实现完善 Excel 不规则合并单元格数据导入
在我的文章 《C#实现Excel合并单元格数据导入数据集》里讲述了可以将具有合并单元格的Excel文件数据导入到DataSet里,在实际使用情况中遇到如下情况,如下图:
初九之潜龙勿用
2025/02/20
2840
C# 实现完善 Excel 不规则合并单元格数据导入
VBA专题11:详解UsedRange属性
UsedRange属性是Worksheet对象的一个有用的属性,可以返回工作表中已使用的单元格区域。实际上,根据UsedRange的意思,我们就可以明白,该属性代表工作表中已使用的区域,不仅包括可以看到内容的单元格,而且不包括应用了格式、添加批注或其他一些修改的单元格。我们可以使用UsedRange属性来操控Excel工作表数据。
fanjy
2021/06/01
8.7K0
VBA专题11:详解UsedRange属性
VBA 在 Excel 中的常用操作
设置单元格 Value 里使用 Chr(10) 和 Chr(13),分别表示回车、换行。
mzlogin
2020/04/16
4.6K0
VBA对象变量
大家好,前面介绍了vba中两个主要的对象,单元格range对象和工作表worksheet对象,以及它们的属性和方法。
无言之月
2019/10/13
2.1K0
VBA: 将单元格区域作为邮件正文发送到指定邮箱
文章背景: 在工作中,有时需要将单元格区域的内容作为邮件正文发送到指定邮箱,如果希望邮件正文中的单元格区域带表格样式,则需要将其转换为html格式。
Exploring
2024/04/15
8600
VBA: 将单元格区域作为邮件正文发送到指定邮箱
删除多行多列中的空单元格并重新整理数据
这是在www.vbaexpress.com中看到的一个示例,个人觉得代码很有代表性,特辑录于此,与大家共享。
fanjy
2024/05/13
6500
删除多行多列中的空单元格并重新整理数据
VBA实战技巧01: 在代码中引用动态调整单元格区域的5种方法
在VBA代码中,经常要引用单元格数据区域并对其进行操作。然而,如果对数据区域采用“硬编码”地址,那么当该区域大小变化时,必须修改相应的引用该区域的代码。本文整理了可以动态引用数据区域的5种方法,供编写代码时参考。
fanjy
2020/02/12
5.1K0
相关推荐
VBA实用小程序74:将合并单元格转换为跨列居中
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档