Excel小技巧整理(持续更新)

时间:2021-08-22 09:47:31

合并某列中相同单元格


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

使用方法

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

Excel小技巧整理(持续更新)

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

Excel小技巧整理(持续更新)

  • 切换回表格窗口,在“视图”菜单下找到“宏”,选择“查看宏”并执行该宏
  • 输入需要合并的事第几列,注意是数字而不是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方式也可以是右键标签页-查看代码

Excel小技巧整理(持续更新)

Function mygetnumber(cel As Range)

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

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

Excel小技巧整理(持续更新)

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

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


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

=SUBTOTAL(,B$:B2)

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

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

详见附图

Excel小技巧整理(持续更新)

Excel小技巧整理(持续更新)

excel按固定的列数转置


主要是展示INDEX函数的用法

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

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

    Excel小技巧整理(持续更新)

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

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

Excel小技巧整理(持续更新)

  • 然后其他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列的转置效果,如图所示:

Excel小技巧整理(持续更新)

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

Excel小技巧整理(持续更新)

代码如下

=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,))

Excel小技巧整理(持续更新)

这种方法不受列与列之间先后顺序的限制,而且可以匹配含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&&num;39&semi;t know js

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

随机推荐

  1. C&num; 文章导航

    1. C#相关文章 1.1 C# 基础(一) 访问修饰符.ref与out.标志枚举等等 1.2 C# 基础(二) 类与接口 1.3 C# DateTime日期格式化 1.4 C# DateTime与时 ...

  2. CetnOS minimal 网络不可用

    系统版本: CentOS-6.6-i386-minimal 问题说明: CentOS minimal 在安装完成之后,网络不可用,一些常见的命令报错,如: ping: unknow host xxxy ...

  3. ABP官方文档翻译 6&period;1&period;2 MVC视图

    ASP.NET MVC 视图 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图.你可以如往常一样创建正常的MVC视图. AbpWebView ...

  4. Android查缺补漏(IPC篇)-- 款进程通讯之AIDL详解

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  5. 2018-2019-2 20165239其米仁增《网络对抗》Exp1 PC平台逆向破解

    一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌握反汇编与十六进制编程器 (0.5分) 3.能正确修改机器指令改变程序执行流程(0.5分) 4.能 ...

  6. 【BZOJ5499】&lbrack;2019省队联测&rsqb;春节十二响(贪心)

    [BZOJ5499][2019省队联测]春节十二响(贪心) 题面 BZOJ 洛谷 题解 如果是一条折链,显然维护两侧的值,每次两个堆分别弹出一个\(max\)然后合并一下,最后再放回去就可以了. 那么 ...

  7. zookeeper安装和使用 windows环境(转)

    原文地址: http://blog.csdn.net/tlk20071/article/details/52028945 简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是G ...

  8. ArcGIS案例学习笔记3&lowbar;1

    ArcGIS案例学习笔记3_1 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 时间:第三天上午 内容1:ArcGIS 平台介绍 体系结构 Arcgis for d ...

  9. 自定义控件和View

    一.自定义控件 MotionEvent.ACTION_UP:抬起 MotionEvent.ACTION_DOWN: 按下 MotionEvent.ACTION_POINTER_UP: MotionEv ...

  10. ZT 二分插入排序也称折半插入排序

    二分插入排序也称折半插入排序,基本思想是:设数列[0....n]分为两部分一部分是[0...i]为有序序列,另一部分是[i+1.....n]为无序序列,从无序序列中取一个数 x ,利用二分查找算法找到 ...