合并某列中相同单元格


参考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. [Python 网络编程] makefile (三)

    socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相 ...

  2. [Python 网络编程] TCP编程/群聊服务端 (二)

    群聊服务端 需求分析: 1. 群聊服务端需支持启动和停止(清理资源); 2. 可以接收客户端的连接; 接收客户端发来的数据 3. 可以将每条信息分发到所有客户端 1) 先搭架子: #TCP Serve ...

  3. jquery Mobile入门—多页面切换示例学习

    1.在JQuery Mobile中,多个页面的切换是通过<a>元素.并将<href>属性设置为#+对应的id号的方式进行的. 2.多页面切换示例代码: 复制代码代码如下: &l ...

  4. SpringBoot 默认日志

    默认使用的这个类 org.apache.commons.logging.Log import org.apache.commons.logging.Log; import org.apache.com ...

  5. Linux中使用iptables开放特定端口

    禁止其他主机对该特定主机进行访问和远程连接控制,所以只开放特定端口 只控制INPUT链就可达到控制其他主机对该主机的访问. 1.首先关闭INPUT链 iptables -P INPUT DROP 使用 ...

  6. oracle优化脚本

    oracle优化脚本 --查看PGA的最佳设计建议SQL语句select PGA_TARGET_FOR_ESTIMATE / 1024 / 1024 PGAMB,       PGA_TARGET_F ...

  7. PCA方法从原理到实现

    一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...

  8. vue中监听页面滚动和监听某元素滚动

    ①监听页面滚动 在生命周期mounted中进行监听滚动: mounted () { window.addEventListener('scroll', this.scrollToTop) }, 在方法 ...

  9. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  10. jquery实现漂亮的轮播图

    今天工作中要用到一个轮播功能,在网上找了一些,觉得有些过于繁琐,于是自己动手写了一个,效果如图: 代码如下: <!DOCTYPE html> <html lang="en& ...