比较 Google Sheets 中两列数据的差异:检查号码和金额一致性

比较 google sheets 中两列数据的差异:检查号码和金额一致性

本文旨在帮助你使用 Google Apps Script 比较两个 Google Sheets 中的数据,重点在于检查两列数据(例如支票号码和金额)的一致性。我们将提供一个示例脚本,该脚本可以识别支票号码不匹配、支票号码匹配但金额不匹配的情况,并将结果输出到控制台,方便用户快速定位差异数据。

在处理大量数据时,比对不同表格中特定列的数据,找出差异是常见的需求。本教程将介绍如何使用 Google Apps Script 来比较两个 Google Sheets 中的两列数据,并识别出以下三种情况:

Column C (支票号码) 在另一个 sheet 中不存在。Column C (支票号码) 和 Column D (金额) 的组合在另一个 sheet 中不存在。Column C (支票号码) 在两个 sheet 中都存在,但 Column D (金额) 不一致。

脚本实现

以下是一个示例脚本,用于实现上述功能:

function compareCheckData() {  const ss = SpreadsheetApp.getActiveSpreadsheet();  const sheet1 = ss.getSheetByName("OpenCheckDataBase"); // 第一个 Sheet 的名称  const sheet2 = ss.getSheetByName("IncomingChecks"); // 第二个 Sheet 的名称  // 获取两个 Sheet 中 C 列和 D 列的数据,并去除空行  const data1 = sheet1.getRange("C1:D").getValues().filter(row => row[0] !== "");  const data2 = sheet2.getRange("C1:D").getValues().filter(row => row[0] !== "");  let inconsistentCheckNumbers = 0;  let inconsistentAmounts = 0;  // 将 sheet2 的数据存储到 Map 中,方便查找  const checkDataMap = new Map();  data2.forEach(row => {    checkDataMap.set(row[0], row[1]);  });  // 遍历 sheet1 的数据,与 sheet2 的数据进行比较  data1.forEach((row, index) => {    const checkNumber = row[0];    const amount = row[1];    if (!checkDataMap.has(checkNumber)) {      // 情况 1:支票号码在 sheet2 中不存在      console.log(`Row C${index + 1} in OpenCheckDataBase: Inconsistent check number - ${checkNumber}`);      inconsistentCheckNumbers++;    } else {      const amount2 = checkDataMap.get(checkNumber);      if (amount !== amount2) {        // 情况 3:支票号码存在,但金额不一致        console.log(`Row C${index + 1} in OpenCheckDataBase: Inconsistent check amount for check number ${checkNumber} - Expected: ${amount2}, Actual: ${amount}`);        inconsistentAmounts++;      }    }  });  console.log(`Total inconsistent check numbers: ${inconsistentCheckNumbers}`);  console.log(`Total inconsistent amounts: ${inconsistentAmounts}`);}

代码解释:

获取 Sheet 和数据: 首先,获取需要比较的两个 Sheet,并分别获取 C 列和 D 列的数据。filter(row => row[0] !== “”) 用于去除空行,避免干扰比较结果。创建 Map: 将第二个 Sheet 的数据存储到 checkDataMap 中。Key 为支票号码,Value 为金额。使用 Map 可以提高查找效率。遍历比较: 遍历第一个 Sheet 的数据,对于每一行,首先检查支票号码是否存在于 checkDataMap 中。如果不存在,则说明支票号码不一致。如果存在,则进一步比较金额是否一致。输出结果: 将不一致的支票号码和金额信息输出到控制台。

使用方法

打开你的 Google Sheet。点击 “工具” -> “脚本编辑器”,打开 Google Apps Script 编辑器。将上述代码复制粘贴到脚本编辑器中。修改 sheet1 和 sheet2 变量的值,使其与你的 Sheet 名称相匹配。点击 “保存” 图标保存脚本。点击 “运行” 图标运行脚本。首次运行需要授权。查看 “执行日志” 窗口,可以看到比较结果。

注意事项

确保两个 Sheet 的 C 列都是支票号码,D 列都是金额。脚本区分大小写,请确保支票号码的大小写一致。如果数据量很大,脚本运行时间可能会比较长。该脚本只比较了第一个 Sheet 中存在的支票号码,如果需要找出第二个 Sheet 中存在,但第一个 Sheet 中不存在的支票号码,可以修改脚本,反向遍历。

总结

通过使用 Google Apps Script,可以方便地比较两个 Google Sheets 中的数据,并找出差异。本教程提供了一个示例脚本,用于比较支票号码和金额的一致性。你可以根据自己的实际需求,修改脚本,实现更复杂的数据比较功能。

以上就是比较 Google Sheets 中两列数据的差异:检查号码和金额一致性的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1510174.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月20日 05:49:07
下一篇 2025年12月20日 05:49:13

相关推荐

  • JavaScript如何用FinalizationRegistry管理垃圾回收

    finalizationregistry用于在javascript对象被垃圾回收时执行清理外部资源的回调。其使用步骤为:1. 创建实例并传入回调函数,用于接收对象回收后的关联值并执行清理;2. 使用register方法注册目标对象及其关联值,可选提供解除注册令牌;3. 可通过unregister方法…

    2025年12月20日 好文分享
    000
  • 使用 Google Sheets 脚本比较两列数据并检测差异

    本文将指导你如何使用 Google Apps Script 编写一个函数,比较 Google Sheets 中两个工作表中的支票号码和金额,并识别不一致之处。我们将首先回顾摘要内容,然后详细介绍代码实现、注意事项以及如何根据实际需求进行调整。 代码实现 以下是一个用于比较两个工作表中支票号码和金额的…

    2025年12月20日
    000
  • JavaScript的Object.values方法是什么?如何使用?

    object.values()用于提取对象中所有可枚举的自有属性值并返回数组。它只处理字符串键,忽略symbol键、不可枚举属性和原型链属性。1. 用法为object.values(obj),返回值数组顺序在现代引擎中通常可预测,遵循插入顺序与整数键排序规则;2. 结合数组方法如filter、map…

    2025年12月20日 好文分享
    000
  • ES6的装饰器如何扩展类或方法

    装饰器是一种通过函数修改类或方法行为而不改变其原始定义的机制。它在定义时执行,接收目标作为参数并返回新目标或附加元数据,实现关注点分离。例如,@logmethod装饰器可为方法添加日志功能。常见应用场景包括日志监控、权限控制、数据校验、防抖节流等。编写装饰器需注意执行顺序(属性→方法→类,多个装饰器…

    2025年12月20日 好文分享
    000
  • 使用 Google Sheets 脚本比较多个列以检测不一致的支票数据

    本文档旨在指导您使用 Google Sheets 脚本来比较两个工作表中支票号码和金额,以识别不一致的数据。我们将创建一个脚本,该脚本能够检测无效的支票号码、无效的支票金额以及支票号码匹配但金额不匹配的情况,并将结果记录到控制台中。通过学习本教程,您将能够有效地验证和清理财务数据,确保数据的准确性和…

    2025年12月20日
    000
  • JavaScript的WeakSet是什么?怎么用?

    weakset是一种存储对象弱引用的集合,其核心特性在于不阻止垃圾回收。1. weakset与set的核心区别:weakset持弱引用,set持强引用;weakset仅存对象,set可存任意值;weakset不可遍历且无size属性,set反之。2. 使用场景包括避免dom内存泄漏、标记已处理对象和…

    2025年12月20日 好文分享
    000
  • JavaScript中的闭包是什么?如何实际应用?

    闭包是javascript中函数与其词法环境的组合,使内部函数能访问并记住外部函数的变量,即使外部函数已执行完毕。1. 闭包通过函数定义时的[[environment]]属性保持对外部变量的引用,阻止其被垃圾回收,实现数据私有化和持久化;2. 常见应用场景包括数据封装(如创建私有变量)、函数柯里化(…

    2025年12月20日 好文分享
    000
  • JavaScript如何用Object.seal防止对象扩展

    object.seal() 用于阻止向对象添加新属性并标记现有属性为不可配置,但允许修改可写属性的值。1. 它固定对象结构,防止增删属性或修改属性特性;2. 允许修改已有属性的值(若属性可写);3. 不影响嵌套对象,需手动递归密封;4. 在严格模式下非法操作会抛出错误;5. 性能开销小,适合维护代码…

    2025年12月20日 好文分享
    000
  • JavaScript的instanceof操作符是什么?如何使用?

    instanceof用于判断对象是否是某个构造函数或类的实例,其原理是检查对象的原型链上是否存在构造函数的prototype属性。1. 它适用于自定义类和继承体系中的类型判断,如判断john是否是person或其父类animal的实例;2. 常见“坑”包括:跨realm对象导致判断失败(如ifram…

    2025年12月20日 好文分享
    000
  • JavaScript的sessionStorage是什么?如何使用?

    sessionstorage是浏览器提供的临时存储机制,数据生命周期绑定当前标签页,关闭即清除。1.用于跨页面或刷新后保持临时数据,如多步骤表单暂存、spa状态管理;2.区别于localstorage,sessionstorage仅在当前会话有效且作用域限于当前标签页;3.使用时需注意:仅存储非敏感…

    2025年12月20日 好文分享
    000
  • JavaScript如何用数组的sort方法排序对象

    在javascript中对对象数组排序需要提供自定义比较函数。1. 数值属性排序可通过相减实现升序或降序;2. 字符串属性排序应使用localecompare方法以支持多语言环境;3. 日期属性需转换为时间戳后进行数字比较;4. 多字段排序通过链式判断先主后次决定顺序;5. 空值处理需显式判断并决定…

    2025年12月20日
    000
  • JavaScript中异步编程的常见误区

    javascript异步编程通过非阻塞机制提升程序效率,但常引发回调地狱、错误未捕获、async/await使用误区及并发控制混乱等问题。1. 回调地狱虽因promise和async/await的引入而形式上缓解,但复杂逻辑下仍可能以新形式存在;2. async函数未按预期执行,常见于忘记使用awa…

    2025年12月20日 好文分享
    000
  • JavaScript的Array.isArray方法是什么?怎么用?

    array.isarray() 是 javascript 中用于判断一个值是否为数组的可靠方法。它返回布尔值,若参数是数组则返回 true,否则返回 false。相比 typeof 操作符,array.isarray() 能准确区分数组和对象,因为 typeof 对数组返回的是 “obj…

    2025年12月20日 好文分享
    000
  • 响应式React:解决onKeyDown事件中状态更新延迟问题

    本文旨在解决React组件中onKeyDown事件处理函数内状态更新延迟的问题。通过分析事件循环机制和React的批量更新策略,提供使用useEffect Hook来确保状态及时更新的解决方案,并附带示例代码,帮助开发者避免类似陷阱,构建更流畅的用户界面。 在React应用开发中,我们经常需要在键盘…

    2025年12月20日
    000
  • JavaScript的setInterval函数是什么?如何使用?

    setinterval是javascript中用于重复执行函数的定时器函数,其基本语法为setinterval(callback, delay, [arg1, arg2, …]),callback为要重复执行的函数,delay为间隔时间(毫秒),可选参数会传递给callback;它返回一…

    2025年12月20日 好文分享
    000
  • fetch API的异步数据获取方法

    fetch api基于promise,提供异步请求能力,替代xmlhttprequest。1. fetch调用后返回promise,解析为response对象,即使http状态码为404或500也不会reject,需手动检查response.ok判断业务成功与否;2. 响应数据需通过response…

    2025年12月20日 好文分享
    000
  • JavaScript的querySelector方法是什么?怎么用?

    javascript的queryselector方法用于通过css选择器查找第一个匹配的dom元素。它接受一个css选择器作为参数,返回第一个匹配的元素或null,基本语法是element.queryselector(selectors)。1. queryselector只返回第一个匹配项;2. 若…

    2025年12月20日 好文分享
    000
  • 在Shiny应用中实现Highcharts地图点击联动与标签页自动切换

    本文详细介绍了如何在R Shiny应用中,通过整合highcharter包绘制的交互式地图和tabsetPanel,实现用户点击地图上的区域(如美国各州)时,自动切换到指定标签页,并同时更新该标签页内的选择输入框(selectInput)以显示所点击区域的信息。教程涵盖UI布局、JavaScript…

    2025年12月20日
    000
  • JavaScript中异步编程的最佳实践

    async/await是javascript异步编程的最佳实践,1.它通过同步写法简化promise代码,提升可读性和维护性;2.利用try…catch实现优雅错误处理,避免未捕获拒绝;3.结合promise.all()和promise.race()支持并发操作;4.需注意避免不必要的串…

    2025年12月20日 好文分享
    000
  • JavaScript的class关键字是什么?如何定义类?

    javascript的class是es6提供的定义类的语法糖,底层基于原型继承。1.使用class关键字定义类,如class myclass {};2.构造函数constructor用于初始化实例属性;3.方法定义在类体中,自动添加到原型;4.通过extends实现继承,子类用super调用父类构造…

    2025年12月20日 好文分享
    000

发表回复

登录后才能评论
关注微信