news 2026/8/15 13:49:25

Excel数据核对:VLOOKUP、COUNTIF与条件格式对比两列重复值全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Excel数据核对:VLOOKUP、COUNTIF与条件格式对比两列重复值全解析

1. 项目概述:为什么“对比两列”是Excel数据处理的核心技能

在日常工作中,无论是处理销售数据、核对库存清单、还是整理人员名单,一个高频且让人头疼的场景就是:如何快速判断两列数据之间是否存在重复项?这个问题看似简单,但背后牵扯到数据准确性、工作效率和决策依据。想象一下,你手头有一份本月新入职员工名单(A列),和一份全公司员工花名册(B列),你需要快速知道新员工里有没有人其实已经入职过了。手动用眼睛一行行比对?数据量一旦超过50行,不仅效率低下,而且几乎百分之百会出错。

这正是“Excel:对比两列是否有重复值”这个标题背后真正的需求。它不是一个孤立的函数练习,而是数据清洗、数据核对、数据合并等一系列复杂操作中最基础、最关键的第一步。掌握高效、准确的对比方法,意味着你能在几秒钟内完成可能需要数小时的人工核对工作,将精力从繁琐的重复劳动中解放出来,投入到更有价值的分析中去。

本文将彻底拆解在Excel中对比两列数据的多种方法,从最基础的函数公式到高阶的动态数组技巧,并结合大量实际案例,让你不仅知道“怎么做”,更透彻理解“为什么这么做”以及“什么时候该用哪种方法”。我们会重点解析VLOOKUPMATCHIFISNUMBER这些热搜词背后的逻辑,并延伸到COUNTIF、条件格式乃至Power Query等工具,构建一个完整的解决方案工具箱。

2. 核心思路与方案选型:从需求出发选择最佳工具

面对“对比两列”这个任务,首先不要急于写公式,而是要先明确你的具体需求数据状态。不同的场景,最优解截然不同。我们可以把需求分为几个层次:

  1. 单纯标记:在A列旁边,直观地标记出哪些值在B列中存在(或不存在)。
  2. 提取清单:把A列中存在于B列的值(或不存在于B列的值)单独提取到一个新列表。
  3. 计数统计:统计A列中有多少个值在B列中出现过。
  4. 模糊匹配:考虑部分匹配、包含关系,而不仅仅是精确相等。

基于这些需求,Excel提供了从易到难一整套工具链。选择哪种方案,主要取决于你的Excel版本(是否支持动态数组函数如FILTERUNIQUE)以及你对公式的熟悉程度。

方案选型背后的核心逻辑:

  • VLOOKUP/MATCH+ISNUMBER+IF组合:这是最经典、兼容性最强的方案。其核心思想是“查找与判断”。VLOOKUPMATCH函数负责去目标列(B列)中搜索当前值。如果找到,函数会返回一个有效结果(如位置数字);如果找不到,则返回错误值#N/AISNUMBER函数就是用来判断这个返回结果是不是一个数字(即是否找到)。最后,IF函数根据ISNUMBER的判断结果,输出我们自定义的文本,比如“重复”或“唯一”。
    • 为什么常用MATCH而不是VLOOKUP对于单列查找,MATCH函数更轻量、更直接。VLOOKUP需要指定列索引,在单列查找中略显冗余。MATCH(lookup_value, lookup_array, 0)0参数代表精确匹配,直接返回位置,逻辑更清晰。
  • COUNTIF函数:这是另一个极其强大的单函数解决方案。其逻辑是“计数判断”。COUNTIF函数可以统计某个值在一个范围内出现的次数。我们用它统计A列的某个值在B列中出现的次数。如果次数大于0,则说明存在。
    • 优势:公式更简洁,逻辑更直观(“数一数有没有”),且不依赖于查找函数可能返回的错误值,对新手更友好。
  • 条件格式:如果你不需要生成新的数据列,只想在原始数据上做高亮可视化,那么条件格式是最高效的选择。它本质上是在后台运用了COUNTIFMATCH的逻辑,但无需写公式单元格,直接对单元格应用颜色规则。
  • Power Query:当数据量极大(数十万行),或者你需要定期、自动化地重复这个对比流程时,Power Query(获取和转换数据)是终极武器。它通过合并查询功能,以数据库连接(Join)的思维来处理对比,性能强大且可重复执行。

注意:对于绝大多数日常办公场景(数据量在几万行以内),COUNTIFMATCH+IF的组合已经能解决99%的问题。优先掌握它们,再根据需求学习其他工具。

2.1 不同数据场景下的策略考量

除了需求,数据本身的特点也决定了方法的选择:

  • 数据是否排序?如果两列数据都已排序,理论上可以使用更简单的比较方法,但现实中未经排序的数据是常态,因此我们默认讨论无序数据的对比。
  • 是否存在空白单元格?空白单元格在对比中可能被忽略或引发错误,公式中需要考虑使用IFIFERROR进行容错处理。
  • 是否需要区分大小写?Excel的VLOOKUPMATCHCOUNTIF默认都是不区分大小写的。如果需要区分,必须使用EXACT函数配合数组公式,这属于进阶技巧。
  • 数据量级:如前所述,超过10万行,函数计算可能会明显变慢,此时应考虑Power Query或数据库工具。

3. 核心函数公式深度解析与实操要点

这一部分,我们将深入每一个核心函数,拆解其参数、原理和常见陷阱。理解这些细节,是写出健壮、准确公式的关键。

3.1 MATCH函数:精准的“定位器”

MATCH函数用于在一行或一列(查找区域)中搜索指定项,然后返回该项在区域中的相对位置

语法:=MATCH(lookup_value, lookup_array, [match_type])

  • lookup_value:要查找的值。可以是数值、文本、逻辑值或单元格引用。
  • lookup_array:要搜索的单元格区域。必须是单行或单列。
  • [match_type]:匹配类型。这是关键参数!
    • 0:精确匹配。这是我们在数据对比中最常使用的。查找区域无需排序。
    • 1:小于等于匹配。要求查找区域必须按升序排列。如果找不到精确值,则返回小于等于查找值的最大值位置。
    • -1:大于等于匹配。要求查找区域必须按降序排列

在对比两列中的应用逻辑:我们使用=MATCH(A2, $B$2:$B$100, 0)。这个公式的意思是:在$B$2:$B$100这个绝对引用的区域里,精确查找A2单元格的值。

  • 如果找到了,比如A2的值“张三”在B列的第5行,那么公式返回数字5
  • 如果没找到,公式返回错误值#N/A

实操心得:务必使用绝对引用$B$2:$B$100来锁定查找区域。这样当你将公式向下填充时,查找区域不会随着行号变化而错位。这是新手最容易犯的错误之一,会导致对比结果完全混乱。

3.2 ISNUMBER与ISERROR:关键的“判断器”

MATCH函数返回的要么是数字(位置),要么是错误#N/A。我们需要一个函数来把这个结果转化为逻辑值TRUEFALSE

  • ISNUMBER(value):检查value是否为数字。是则返回TRUE,否则返回FALSE
    • 对于MATCH返回的位置数字(如5),ISNUMBER(5)结果为TRUE,表示“找到了”。
    • 对于MATCH返回的错误#N/AISNUMBER(#N/A)结果为FALSE,表示“没找到”。
  • ISERROR(value):检查value是否为任何错误值(#N/A,#VALUE!,#REF!,#DIV/0!,#NUM!,#NAME?,#NULL!)。是则返回TRUE
    • 对于MATCH返回的错误#N/AISERROR(#N/A)结果为TRUE,表示“没找到”。
    • 对于MATCH返回的位置数字,ISERROR(5)结果为FALSE,表示“找到了”。

选择ISNUMBER还是ISERROR这取决于你想用TRUE代表“存在”还是“不存在”。通常,我们用ISNUMBER更符合直觉:找到(是数字)为TRUE。但如果你希望用TRUE标记“错误”(即不存在的项),则用ISERROR。在后续的IF函数中调整输出文本即可。

3.3 IF函数:最终的“输出控制器”

IF函数根据逻辑测试的结果,返回不同的值。

语法:=IF(logical_test, [value_if_true], [value_if_false])

  • logical_test:一个计算结果为TRUEFALSE的条件表达式。这里就是我们上面ISNUMBERISERROR的结果。
  • [value_if_true]:当logical_testTRUE时返回的值。
  • [value_if_false]:当logical_testFALSE时返回的值。

组合起来:=IF(ISNUMBER(MATCH(A2, $B$2:$B$100, 0)), “重复”, “唯一”)这个公式的执行顺序是“由内向外”:

  1. 先执行MATCH(A2, $B$2:$B$100, 0),得到结果A(数字或#N/A)。
  2. 再执行ISNUMBER(结果A),得到结果B(TRUEFALSE)。
  3. 最后执行IF(结果B, “重复”, “唯一”),根据结果B输出最终文本。

3.4 COUNTIF函数:更直观的“计数器”方案

COUNTIF函数对区域中满足单个条件的单元格进行计数。

语法:=COUNTIF(range, criteria)

  • range:要计数的单元格区域。
  • criteria:统计的条件,可以是数字、表达式、单元格引用或文本字符串。

在对比两列中的应用逻辑:=COUNTIF($B$2:$B$100, A2)这个公式的意思是:统计在$B$2:$B$100区域中,值等于A2的单元格有多少个。

  • 如果统计结果> 0,说明A2在B列至少出现了一次,即存在重复。
  • 如果统计结果= 0,说明A2在B列没有出现,即唯一。

我们可以直接将其嵌入IF函数:=IF(COUNTIF($B$2:$B$100, A2)>0, “重复”, “唯一”)

COUNTIFvsMATCH组合的优劣分析:

特性COUNTIF方案MATCH+ISNUMBER+IF方案
公式简洁度更优。一个函数搞定计数和条件判断。稍逊。需要三个函数嵌套。
逻辑直观性更优。“数一数有没有”非常符合人类思维。需要理解查找、判断、输出的链条。
计算性能对于中等数据量,两者差异不大。在极大量数据且查找区域固定时,COUNTIF可能稍慢,因为它要对整个区域进行条件判断。MATCH在找到第一个匹配项后即停止搜索,理论上在存在大量重复时可能稍快。
返回信息只能知道“有”或“没有”。通过MATCH的返回值,还能知道重复值在B列的具体位置
错误处理不涉及错误值,直接返回数字。对新手更友好。涉及#N/A错误,需要ISERRORIFERROR处理。

注意事项:COUNTIF函数的criteria参数如果使用文本,且文本中包含比较运算符(如>,<)或通配符(*,?),需要特别注意。例如,要统计恰好等于“A*”的单元格,应该写为“=A~*”“A~*”(使用~转义星号)。在对比普通文本时,直接引用单元格即可,无需担心。

4. 完整实操流程:从零构建对比系统

假设我们有一个简单的场景:A列是“待核对名单”(100条),B列是“总名单”(1000条)。我们需要在C列标记出A列中哪些人在总名单里。

4.1 方法一:使用COUNTIF函数(推荐新手)

这是最快捷、最不易出错的方法。

  1. 定位输出列:在C列(或任何空白列)的第一个单元格(如C2)输入公式。
  2. 输入核心公式:在C2单元格中输入:
    =IF(COUNTIF($B$2:$B$1001, A2)>0, “在总名单中”, “不在总名单中”)
    • $B$2:$B$1001:这是“总名单”B列的绝对引用范围。请根据你的实际数据行数调整1001
    • A2:这是“待核对名单”A列的第一个待查值,使用相对引用。
    • “在总名单中”“不在总名单中”:你可以自定义为任何提示文本,如“重复”、“唯一”、“Exist”、“Not Found”等。
  3. 公式填充:输入完公式后,按Enter键。然后双击C2单元格右下角的填充柄(小方块),或者鼠标拖动填充柄向下填充至C101单元格。Excel会自动将公式应用到整个A列数据范围,并调整A2的相对引用(变成A3, A4...),而$B$2:$B$1001的绝对引用保持不变。
  4. 检查结果:C列会清晰显示每一行A列数据的核对结果。

现场记录与参数选择:

  • 为什么用$B$2:$B$1001而不是B:B?虽然B:B代表整列更简单,但在数据量极大时,引用整列会显著降低计算速度,因为Excel会计算整个列(超过100万行)。指定精确范围是良好的性能习惯。
  • 如果“总名单”B列的数据可能会增加,可以将范围设得更大一些,比如$B$2:$B$2000,为未来留出空间。或者使用结构化引用(如果数据在表格内)或动态命名范围,但这属于进阶技巧。

4.2 方法二:使用MATCH+IF函数组合(经典通用)

如果你需要获取重复项在B列中的位置信息,或者想深入理解函数嵌套,可以采用此方法。

  1. 在C2单元格输入公式
    =IF(ISNUMBER(MATCH(A2, $B$2:$B$1001, 0)), “在总名单中”, “不在总名单中”)
  2. 公式填充:同样,双击或拖动填充柄向下填充。
  3. (可选)获取位置:如果你不仅想知道是否存在,还想知道在B列的哪一行,可以在D列使用公式:
    =IFERROR(MATCH(A2, $B$2:$B$1001, 0), “未找到”)
    这个公式直接返回匹配的位置(行号相对于$B$2:$B$1001的范围,例如返回5表示在B2:B1001的第5行,即B6单元格)。如果未找到,IFERROR函数会捕获#N/A错误并显示“未找到”。

4.3 方法三:使用条件格式进行可视化高亮

如果你不需要生成新的文本列,只想在原数据上突出显示,条件格式是完美选择。

目标:高亮显示A列中那些在B列里存在的单元格。

  1. 选中待核对区域:用鼠标选中A列的数据区域,例如A2:A101。
  2. 打开条件格式:点击【开始】选项卡 -> 【条件格式】 -> 【新建规则】。
  3. 选择规则类型:在对话框中选择“使用公式确定要设置格式的单元格”。
  4. 输入公式:在“为符合此公式的值设置格式”框中输入:
    =COUNTIF($B$2:$B$1001, A2)>0
    重点:这里的A2要写成所选区域活动单元格的地址。通常你选中A2:A101后,A2就是活动单元格(即使背景不同)。公式必须以相对引用的方式指向该列的第一个单元格。
  5. 设置格式:点击【格式】按钮,选择一种高亮格式,比如填充为浅绿色、字体加粗等。
  6. 确定:点击两次【确定】。此时,A列中所有在B列出现的值都会被高亮显示。

实操心得:条件格式中的公式引用非常关键。$B$2:$B$1001必须使用绝对引用,确保所有A列单元格都去核对这个固定的B列区域。而A2必须使用相对引用(列相对,行相对),这样当规则应用到A3时,公式会自动变成=COUNTIF($B$2:$B$1001, A3)>0,以此类推。这是条件格式使用公式时最容易出错的地方。

4.4 方法四:使用VLOOKUP函数(理解原理)

虽然MATCH更适合单列查找,但用VLOOKUP实现对比有助于理解更广泛的查找逻辑。

公式为:=IF(ISNUMBER(VLOOKUP(A2, $B$2:$B$1001, 1, FALSE)), “重复”, “唯一”)

  • VLOOKUP(A2, $B$2:$B$1001, 1, FALSE):在$B$2:$B$1001区域的第一列(因为区域只有一列,所以列索引是1)中精确查找A2。找到则返回A2本身,找不到则返回#N/A
  • 后续的ISNUMBERIF逻辑与MATCH方案一致。但注意,VLOOKUP找到时返回的是查找值本身(文本或数字),并非总是数字,所以用ISNUMBER判断可能不准确。更稳妥的做法是用ISERRORIFERROR=IF(ISERROR(VLOOKUP(A2, $B$2:$B$1001, 1, FALSE)), “唯一”, “重复”)或者更简洁的:=IFERROR(VLOOKUP(A2, $B$2:$B$1001, 1, FALSE), “唯一”)这个公式直接返回查找结果,如果出错(即找不到)则显示“唯一”。但这样“重复”的单元格显示的是值本身,而不是“重复”文本。若需统一文本,仍需外层套IF

由此可见,对于单纯的“是否存在”判断,VLOOKUP并非最优雅的选择,但它作为最知名的查找函数,了解其在此场景下的应用有助于融会贯通。

5. 高阶技巧与动态数组函数应用

如果你的Excel版本是Microsoft 365或2021版,那么动态数组函数将为你打开新世界的大门,让对比和提取操作变得无比优雅和强大。

5.1 使用FILTER函数直接提取重复项/唯一项

传统方法只能标记,而FILTER函数可以直接把结果筛选出来,生成一个新的动态数组。

目标:提取A列中所有在B列里存在的值。

  1. 在一个空白单元格(如E2)输入公式:
    =FILTER(A2:A101, COUNTIF($B$2:$B$1001, A2:A101)>0)
  2. Enter键。你会看到E2单元格开始,向下自动溢出了一个列表,这个列表就是A列中所有在B列出现过的值。
    • A2:A101:待筛选的数组。
    • COUNTIF($B$2:$B$1001, A2:A101)>0:筛选条件。这里COUNTIF的第二个参数用了整个区域A2:A101,这是一个数组运算。它会为A2:A101中的每一个值,分别计算在B列出现的次数,并生成一个由TRUE/FALSE组成的数组。FILTER函数会根据这个布尔数组,筛选出对应为TRUE的A列值。

提取A列中不在B列的值(唯一项):只需将条件取反即可:

=FILTER(A2:A101, COUNTIF($B$2:$B$1001, A2:A101)=0)

优势:

  • 一步到位:无需先标记再筛选,直接得到结果列表。
  • 动态更新:当A列或B列的数据发生变化时,这个动态数组结果会自动更新。
  • 简洁直观:公式逻辑非常清晰。

5.2 使用UNIQUE和FILTER组合处理复杂对比

场景:找出A列和B列共同存在不重复值列表(即两列的交集,并去重)。

=UNIQUE(FILTER(A2:A101, COUNTIF($B$2:$B$1001, A2:A101)>0))

这个公式先FILTER出A列中在B列存在的值,再用UNIQUE对这个结果进行去重。

5.3 使用XLOOKUP函数(现代化替代)

XLOOKUP是微软推出的新一代查找函数,功能比VLOOKUPHLOOKUP更强大、更灵活。

XLOOKUP判断是否存在:

=IF(ISNUMBER(XLOOKUP(A2, $B$2:$B$1001, $B$2:$B$1001)), “重复”, “唯一”)

或者利用其内置的错误处理:

=IFERROR(XLOOKUP(A2, $B$2:$B$1001, “重复”), “唯一”)

XLOOKUP的语法是XLOOKUP(查找值, 查找数组, 返回数组, [未找到结果], [匹配模式], [搜索模式])。这里我们让返回数组也是$B$2:$B$1001,找到则返回找到的值本身,然后用IFERROR处理未找到的情况。

注意事项:动态数组函数是Excel现代化的标志,但它们只在较新版本中可用。如果你的文件需要与使用旧版Excel(如2016及更早)的同事共享,应避免使用这些函数,或做好兼容性处理。

6. 常见问题排查与实战避坑指南

在实际操作中,你肯定会遇到各种意想不到的问题。下面是我总结的“血泪教训”和解决方案。

6.1 公式结果全部错误或全部相同

  • 问题现象:填充公式后,整列都显示“重复”或都显示“唯一”。
  • 可能原因与排查
    1. 绝对引用/相对引用错误:这是头号杀手。检查你的查找区域(如$B$2:$B$1001)是否使用了绝对引用($符号)。如果忘了加$,向下填充时,查找区域会跟着下移,导致后面的单元格都在错误的区域里查找。
      • 解决:在编辑栏选中区域部分,按F4键快速添加绝对引用符号。
    2. 数据区域不匹配:公式中引用的行数(如1001)小于实际数据行数,导致部分数据未被纳入对比范围。
      • 解决:将范围扩大到足以覆盖所有数据,或直接引用整列(B:B),但需注意性能。
    3. 多余空格或不可见字符:单元格内容肉眼看起来一样,但可能开头或结尾有空格,或者存在换行符等不可见字符。Excel的文本比较对此非常敏感。
      • 排查:使用LEN函数检查两个“看起来相同”的单元格长度是否一致。例如,在空白单元格输入=LEN(A2)=LEN(B5)进行对比。
      • 解决:使用TRIM函数清除首尾空格。公式可改为:=IF(COUNTIF($B$2:$B$1001, TRIM(A2))>0, “重复”, “唯一”)。对于更复杂的不可见字符,可使用CLEAN函数。

6.2 公式返回#N/A或其他错误值

  • 问题现象:单元格显示#N/A#VALUE!等错误。
  • 可能原因与排查
    1. #N/A错误:通常来自VLOOKUPMATCH未找到值。如果你用的是MATCH+IF组合,且没有用ISERRORIFERROR包裹,就会直接显示#N/A。这是正常现象,说明你的公式逻辑正确,只是需要外层用IFERROR处理。
      • 解决:将公式改为=IFERROR(你的原公式, “未找到”)
    2. #VALUE!错误:可能因为函数参数类型不匹配。例如,MATCH的查找区域不是单行或单列;或者COUNTIF的条件区域和条件数据类型冲突(极少见)。
      • 解决:检查函数参数引用的区域形状是否正确。
    3. 公式输入错误:缺少括号、逗号写成中文标点等。
      • 解决:仔细核对公式,确保所有括号成对出现,所有分隔符(逗号、冒号)都是英文半角符号。

6.3 条件格式不生效或生效范围不对

  • 问题现象:设置了条件格式,但单元格没有高亮,或者不该高亮的也高亮了。
  • 可能原因与排查
    1. 公式中的引用错误:这是条件格式问题的核心。必须牢记:公式中对于“活动单元格”的引用必须是相对引用。如果你选中A2:A101后,在规则中输入=COUNTIF($B$2:$B$1001, $A$2)>0,那么只有A2单元格会基于A2的值去判断,其他单元格(A3, A4...)也都在用A2的值判断,导致结果全部基于A2。
      • 解决:确保公式中代表“当前单元格值”的部分是相对引用(如A2),而查找区域是绝对引用(如$B$2:$B$1001)。
    2. 应用范围错误:检查条件格式规则管理器中,该规则的应用范围是否是你选中的区域=$A$2:$A$101
    3. 规则冲突或停止条件为真:如果有多个条件格式规则,优先级和“如果为真则停止”的设置会影响显示。

6.4 性能缓慢(处理大量数据时)

  • 问题现象:输入或修改公式后,Excel计算卡顿。
  • 可能原因与优化
    1. 整列引用:在数万行数据中使用A:AB:B这样的整列引用,会强制Excel计算超过100万个单元格,即使大部分是空的。
      • 优化:改为引用精确的数据范围,如$A$2:$A$50000
    2. ** volatile函数**:虽然COUNTIFMATCH不是易失性函数,但如果你在公式中嵌套了INDIRECTOFFSETTODAYNOWRAND等易失性函数,会导致任何单元格变动都触发整个工作表的重新计算。
      • 优化:尽量避免在大数据量公式中嵌套易失性函数。
    3. 数组公式(旧版):如果你使用了需要按Ctrl+Shift+Enter输入的旧版数组公式,且范围很大,计算负担会很重。
      • 优化:尽可能使用动态数组函数(如FILTER)或普通公式替代。
    4. 工作簿模式:确保Excel处于“自动计算”模式(公式选项卡 -> 计算选项 -> 自动)。如果是“手动计算”,你可能需要按F9来更新,但这通常不是卡顿的原因。

6.5 区分大小写对比

Excel默认的查找和比较是不区分大小写的。“Apple”和“apple”会被视为相同。 如果需要区分,必须使用EXACT函数配合数组公式(旧版)或辅助列。

方法(使用辅助列):

  1. 在C2输入公式(标记A列在B列是否存在,区分大小写):
    =SUMPRODUCT(--(EXACT(A2, $B$2:$B$1001)))>0
    EXACT(A2, $B$2:$B$1001)会返回一个由TRUE/FALSE组成的数组,表示B列每个单元格是否与A2完全一致(区分大小写)。--将逻辑值转换为1和0。SUMPRODUCT对这个数组求和。如果和大于0,说明存在完全匹配项。
  2. 将此公式向下填充。然后可以用IF函数包装输出文本:=IF(SUMPRODUCT(--(EXACT(A2, $B$2:$B$1001)))>0, “重复”, “唯一”)

这个方法计算量较大,仅在小数据量或必需时使用。

掌握以上这些方法、原理和排错技巧,你就能从容应对Excel中各种两列数据对比的需求。核心在于根据具体场景选择最合适的工具:快速标记用COUNTIF或条件格式,需要提取结果用FILTER,需要兼容旧版用MATCH+IF。理解每个函数背后的逻辑,才能举一反三,真正提升数据处理效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 13:45:54

Spark SQL中数据存储格式与压缩格式

一、数据存储格式Spark SQL支持多种文件存储格式&#xff0c;主要分为行式存储和列式存储两大类。1. 行式存储&#xff1a;数据按行组织&#xff0c;同一行的所有字段值在物理上连续存放。以一张用户表为例&#xff08;ID, Name, Age, City&#xff09;&#xff1a;行1&#xf…

作者头像 李华
网站建设 2026/8/15 13:45:47

黑光全彩为什么必须在Raw域降噪?——DeepISP的联合优化遗产

一、制造认知缺口&#xff1a;低光下&#xff0c;传统ISP的第一步就在制造问题安防监控的黑光全彩场景面临一个被反复低估的技术挑战&#xff1a;不是"噪声太多"&#xff0c;而是"噪声被Demosaic&#xff08;去马赛克&#xff09;放大了之后&#xff0c;再去降噪…

作者头像 李华
网站建设 2026/8/15 13:43:56

记录-boot项目校验字符串

1、用 Apache Commons Lang 3 依赖中的StringUtils.isBlank(CharSequence cs)StringUtils.isBlank(CharSequence cs) 用来判断字符串是否为空、为 null 或者只包含空格引入依赖<!-- Apache Commons Lang3工具--><dependency><groupId>org.apache.commons&…

作者头像 李华
网站建设 2026/8/15 13:43:43

PSO优化Kmeans在电力负荷分析中的应用与MATLAB实现

1. 项目背景与核心价值 电力负荷分析一直是能源管理领域的重要课题。传统用电行为分析往往采用固定阈值或简单统计方法&#xff0c;难以捕捉用户用电模式的非线性特征。我们团队在电力公司实际项目中发现&#xff0c;基于Kmeans的传统聚类方法在处理高维度用电数据时&#xff0…

作者头像 李华