合并某列中相同单元格


参考https://jingyan.baidu.com/article/9158e00006db70a25512286f.html

使用方法

  • 先给需要合并的列排序,这样相同数据会排在一起
  • 在excel中按Alt+F11打开VBA窗口
    • 一次性使用:直接插入新的模块, 复制下文中的代码,然后转到excel主界面进行后续操作

    • 想要保存模块并在接下来的excel文件中使用,可以参考下图将模块导出成bas文件,之后在在新的excel中打开VBA界面,左侧文件列表右键导入.bas文件

  • 切换回表格窗口,在“视图”菜单下找到“宏”,选择“查看宏”并执行该宏
  • 输入需要合并的事第几列,注意是数字而不是ABC
  • 确定,完成

VBA代码如下

 Sub 合并相同用单元格()
Dim l%, i%
Application.DisplayAlerts = False
k% = InputBox("请输入合并单元格所在列")
l = [A65536].End(xlUp).Row
For i = l To 2 Step -1
If Cells(i, k) = Cells(i - 1, k) Then
Range(Cells(i - 1, k), Cells(i, k)).Merge
End If
Next
Application.DisplayAlerts = True
End Sub

单元格中提取数字


https://baijiahao.baidu.com/s?id=1575378393296614&wfr=spider&for=pc

对于一个单元格中多位同学信息并且夹杂中文、数字和符号的情况,先提取所有数字,再类似于步骤4根据固定字符串长度来分割学号(数字),转换为步骤3的情况处理

打开VBA方式也可以是右键标签页-查看代码

Function mygetnumber(cel As Range)

    With CreateObject("vbscript.regexp")
.Pattern = "[^\d.-]+"
.Global = True mygetnumber = .Replace(cel, " ") End With End Function

使用方法是在单元格中输入函数名字,括号参数为单元格,即可使用

对于一个单元格中多位同学信息并且夹杂中文、数字和符号的情况,先提取所有数字,再类似于步骤4根据固定字符串长度来分割学号(数字),转换为步骤3的情况处理

不受筛选影响的填充序列方法


筛选前,在A2单元格输入以下公式,然后向下填充公式

=SUBTOTAL(,B$:B2)

公式表示:对B$2:B2区域未被隐藏的实际显示数据计数。其中的103就是个常数,不要更改

这样执行筛选后,不符合条件的行不参与序号编排。

详见附图

excel按固定的列数转置


主要是展示INDEX函数的用法

=INDEX(array, row_num, [column_num])
返回表格或数组中的元素值,此元素由行号和列号的索引值给定。当函数 INDEX 的第一个参数为数组常量时,使用数组形式。
array可以使某几行或者某几列的形式,比如$1:$3或者$A:$A
  1. 第一行放入数据,然后第二行之后的公式如下(右拉下拉填充):

    =INDEX($:$,,COLUMN(A1)+(ROW(A1)-)*)  
    其中COLUMN和ROW函数用来作为计算参考
  2. 可以实现每行10列的转置效果,如图所示:

此方法可以用在需要规格整理打印的情况中,比如打印学生信息小纸片在一张大纸上。

  • 在Data表中放入数据,如图所示

  • 然后其他sheet(比如这里的Print表)输入下列公式并下拉填充):
=IF(INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-1,3)*4+COLUMN(A1)+1,IF(MOD(ROW(A1),3),MOD(ROW(A1),3),3))=0,"",INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-1,3)*4+COLUMN(A1)+1,IF(MOD(ROW(A1),3),MOD(ROW(A1),3),3))) 

IF是判断当前索引内容是否为空,如果为空就返回空字符串而不是0
这里面主要的逻辑是
INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-1,3)*4+COLUMN(A1)+1,IF(MOD(ROW(A1),3),MOD(ROW(A1),3),3))
索引区域是Data表的A:C列,行部分先对于当前单元格的行-1后取3的余数判断是第几组数据(4个一组,每组3行)
列部分需要对当前单元格的列求余数,但是余数为0的时候实际上应该刚好是每一组数据中的第三行,所以用IF判断为0的情况,替换为3
  • 可以实现每行4列的转置效果,如图所示:

  • 打印这个页面之后裁剪就能得到每个人的小信息卡片
  • 更加复杂地,我们可以给每三行过后增加一个分割线,通过if和mod组合实现

代码如下

=IF(MOD(ROW(A1),),IF(INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-,)*+COLUMN(A1)+,MOD(ROW(A1),))=,"","    "&INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-,)*+COLUMN(A1)+,MOD(ROW(A1),)))," -    -    -    -    -    -   ")

拆开方便分析

IF(
  MOD(ROW(A1),4),
  IF(
    INDEX(
      Data!$A:$C,
      QUOTIENT(ROW(A1)-1,4)*4+COLUMN(A1)+1,
      MOD(ROW(A1),4)
    )=0,
    "",
    " "&INDEX(Data!$A:$C,QUOTIENT(ROW(A1)-1,4)*4+COLUMN(A1)+1,MOD(ROW(A1),4))
  ),
  " - - - - - - "
)

 

比VLOOKUP更好的搜索匹配方法——INDEX+MATCH


https://www.ithome.com/html/office/371454.htm

VLOOKUP函数:纵向查找返回表中的值。缺点:查阅值需要位于查找区域的第一列,并且不能判断格式。

以下函数组合尤其适用于含0开头的学号匹配的情况,如果忽略错误转换成数字会丢失开头的0,这时候转换成文字格式若无法用vlookup匹配,可以试试此方法。

=INDEX(在哪儿找,第几行)

=MATCH(找谁,在哪儿找,匹配方式)

如下图需要根据c列的单元格寻找H列中对应行,用index索引G列对应行即可

=INDEX(G:G,MATCH(C3,H:H,))

这种方法不受列与列之间先后顺序的限制,而且可以匹配含0开头的学号,比如

=INDEX(信息列,MATCH(学号,一组学号列,))
其中0表示精确匹配

Excel小技巧整理(持续更新)的更多相关文章

  1. python相关小技巧整理[持续更新]

    1. pdb的非常方便的debug,抛弃print吧~ 参考https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ impor ...

  2. Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]

    1.查询一个对象下所有字段 当需要查询一个对象所有字段进行复制或其他操作,可以使用一段拼接的语句来查询 String query = 'select '; for(String fieldApi : ...

  3. jquery小技巧汇总 持续更新中

    1.jquery高亮当前选中菜单 $("document").ready(function(){ $(".menu li").click(function(){ ...

  4. HTML+CSS - 前端设计的小技巧(持续更新......)

    2015年7月6日20:28:20 1.设置文字的居中,非控件内的. :text-alain:center 2.图片在ASP.NET中,可以直接拖放到界面,自动形成img控件. 3.CSS直接在全局样 ...

  5. 在测试时用到的一些mysql的小技巧(持续更新)

    经常使用的快捷键: 1.ctrl+q 打开查询窗口 2.ctrl+/ 注释sql语句 3.ctrl+shift +/ 解除注释 4.ctrl+r 运行查询窗口的sql语句 5.ctrl+shift+r ...

  6. selenium webdriver使用的一些小技巧(持续更新中)

    1.开始结束时间只支持控件选择,不支持填写,怎么办? 如下图: 解决方案: 用javaScipt把开始结束时间的reaonly属性去除,然后再输入,举例如下 /**     * 输入开始日期     ...

  7. php实用小技巧【持续更新】

    这是本人开始做项目的时候遇到过的问题还有解决方法 1.eval函数 能把字符串转换成可执行的php代码,如果字符串不是可执行的php代码的话,需要在前面加上@,屏蔽notice 2.array_mer ...

  8. Android小技巧总结——持续更新

    WebView实现 博客地址: https://blog.csdn.net/lowprofile_coding/article/details/77928614 获取网络权限 <uses-per ...

  9. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

随机推荐

  1. xcode Aborting commit: '~/Pods' remains in tree-conflict 错误的解决办法

    在网上找了很多, 最后找到一个比较简单有较的 filename: 是出错的文件的绝对路径: xcode会提示 然后开终端: 1:svn remove --force filename 2:svn re ...

  2. HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)

    Portal Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  3. STM32 以太网学习

    STM32进行以太网通信,需要  了解一下内容: 硬件层:MAC控制器  和  PHY 和 变压器 . 软件层:网络协议栈,例如:lwip协议栈,RL-TCPnet协议栈,FreeRTOS-TCP协议 ...

  4. Gradle Goodness: Copy Files with Filtering

    Gradle Goodness: Copy Files with Filtering Gradle's copy task is very powerful and includes filterin ...

  5. e2fsprogs

    开源文件系统ext2/ext3/ext4管理工具e2progs包含的工具组件: 1.debugfs: ext2/ext3/ext4文件系统调试工具.debugfs是一个交互式的文件系统调试工具,可以用 ...

  6. Page Object 设计模式-PO

    1.传统测试用例实现的弊端: 易读性差 复用性差 可维护性差 扩展性差 2.PO 设计模式图: 3.Page Object 的核心要素: 抽象封装一个 BasePage 基类,基类应该拥有一个只想 w ...

  7. 学习Java的知识体系路线(详细完整版,附图加目录)

    将网上的Java学习路线图进行归纳囊括,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学习方向.至于第一阶段,即JavaSE的基础,这里不给出. 第二阶段 技术名称 技术内容 数据库技术 ...

  8. #leetcode刷题之路31-下一个排列

    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列.如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列).必须原地修改,只允许使用额外常数空间. 以下 ...

  9. 什么是cookie,作用是什么? 以及session的理解

    cookie: 1.定义:什么是cookie?  cookie就是存储在客户端的一小段文本 2.cookie是一门客户端的技术,因为cookie是存储在客户端浏览器中的 3.cookie的作用:是为了 ...

  10. Contract Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...