You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Apps Script中按条件为重复值对应行添加删除线

实现重复值对应小行号单元格添加删除线的方案

核心思路

先按值对单元格分组,再在每个重复值组里筛选出行号更小的单元格,最后给这些单元格添加删除线样式。

具体实现(以JavaScript为例)

  1. 按值分组收集单元格
    遍历原始对象,将相同值对应的所有单元格键归类到同一组:

    const cellObj = { C43: 'X13', C59: 'X13', C75: 'X14', C91: 'X14', C107: 'X16', C123: 'X17', C139: 'X17' };
    const valueGroups = {};
    
    for (const cell in cellObj) {
      const value = cellObj[cell];
      valueGroups[value] ? valueGroups[value].push(cell) : valueGroups[value] = [cell];
    }
    
  2. 筛选需添加删除线的单元格
    对每个值组,提取单元格的行号(去掉前缀C)并排序,把除行号最大之外的单元格加入待处理列表:

    const strikethroughCells = [];
    
    for (const value in valueGroups) {
      const cells = valueGroups[value];
      if (cells.length > 1) {
        // 按行号升序排序
        const sorted = cells.sort((a, b) => parseInt(a.slice(1)) - parseInt(b.slice(1)));
        // 取除最后一个(最大行号)之外的所有单元格
        strikethroughCells.push(...sorted.slice(0, -1));
      }
    }
    

    执行后,strikethroughCells结果为 ['C43', 'C75', 'C123'],完全匹配需求。

  3. 应用删除线样式

    • 如果是操作HTML表格:
      strikethroughCells.forEach(cellId => {
        const cell = document.getElementById(cellId);
        if (cell) cell.style.textDecoration = 'line-through';
      });
      
    • 如果是生成Markdown文本:
      // 假设rowContents存储各单元格的文本内容
      const rowContents = { C43: '行43内容', C59: '行59内容', C75: '行75内容', C91: '行91内容', C107: '行107内容', C123: '行123内容', C139: '行139内容' };
      const result = {};
      
      for (const cell in rowContents) {
        result[cell] = strikethroughCells.includes(cell) ? `~~${rowContents[cell]}~~` : rowContents[cell];
      }
      

内容的提问来源于stack exchange,提问作者Shaik Naveed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:35:11