Excel读书笔记(五)-条件计数与汇总

条件计数

  • 对一组数据进行逻辑判断就能生成一组对应的由逻辑值TRUE和FALSE构成的数组,逻辑值TRUE和FALSE经数学运算后能转化为1和0,最后与SUM函数等配合使用就能实现条件计数
统计”商品名称”中”冰箱”的出现次数
  • 分解动作

1.在B2(第二列)单元格输入公式=(A2=”冰箱”), 用于判断同行A列数据是否是”冰箱”
2.然后在C2单元格输入公式=–(A2=”冰箱”), 将逻辑值转换为数值1和0
3.将B2和C2拖动填充柄向下填充至B9,C9单元格。
4. 此时F2单元格公式可以简单写成=sum(C2:C9),即可求出商品名称为冰箱的个数

  • 一步到位

=sum(–(A2:A9=”冰箱”))

如果单纯统计A列中”冰箱”出现的次数,可以直接使用公式=countif(A2:A9,”冰箱”),countif 函数的用法我们在前面有讲到过

PS: 公式中两个减号主要是将字符型转换为数值型
假如你A1中的内容是一个以文本方式体现的数字,比如A1中填写的是2,但单元格格式却是“文本”,这时A1单元格是无法参与计算的,如果你想引用A1中的这个数字进行计算,就必须将这个数“数值化”。
例如:B1=A1*25,如果不改变A1的格式,就不能算出结果50,这时就将公式写成B1=–A1*25

条件汇总

逻辑值可以转换为数值0和1,任何数字乘上0都得0,任何数字乘上1都保持不变。因此,当一组数值乘上由0和1组成的相同尺寸的数组时,相当于筛选了由数字1所对应的数值,如果在乘积得到的数组外层再套上SUM函数,那么最终实现条件汇总

统计商品名称中冰箱的入库总量

分解动作

  • 在C2单元格中输入公式=–(A2=”冰箱”),用以标记商品名称是否为冰箱
  • 在D2单元格中输入公式B2*C2, 用于提取商品名称为冰箱的入库数量
  • 最后将C2,D2单元格公式向下填充到C9,D9单元格
  • 在G2单元格公式输入=sum(D2:D9) 求出冰箱的入库数量

合并动作

=sum(B2:B9*(A2:A9="冰箱"))

或者可以使用sumif

=sumif(A2:A9,"冰箱",B2:B9) //这个很棒

Excel读书笔记(四)-引用

Excel支持的单元格引用包括两种样式,一种是”A1引用”,另一种为”R1C1引用”。

  • A1引用指的是英文字母代表列标,用数字代表行号,由这两个行列坐标构成单元格地址的引用。在A-Z这26个字母用完以后,列标采用两位字母的方式继续按顺序编码,从第27列开始的列标依次是”AA, AB, AC ….”
  • R1C1引用,是另外一种单元格地址的表达方式,它通过行号和列号以及行列标识“R”和“C”一起来组成单元格地址引用。例如要表示第2列第5行的单元格,R1C1引用的书写方式就是R5C2。
  • 引用运算符

A.区域运算符(冒号:):通过冒号连接前后两个单元格地址,表示引用一个矩形区域,冒号两端的两个单元格分别是这个区域的左上角和右下角单元格

例如C4:F8,它的目标引用区域就是下图所示的矩形区域

如果要引用整行,可以省略列标,例如4:4,表示对第4行整行的引用,与此类似,F:H则表示对F,G,H三列的整列引用

B.交叉运算符(空格):通过空格连接前后丙个单元格区域,表示引用这两个区域的交叠部分。

(B2:D5 C4:F8) 表示两个区域的交叉重叠区域

C.联合运算符(逗号,):使用逗号连接前后两个单元格或区域,表示引用这两个区域共同所组成的联合区域。

(B2:D3, C6:F8)

D.相对引用-单元格公式在复制或填充的过程中,公式内容并不是一成不变的,其中的单元格引用随着所在位置的不同而自动改变(比如原先公式是C3+10),向下拖动填充柄,公式会变成C4+10,C5+10….),这种随着公式所在位置不同而变化的单元格引用方式称为“相对引用”。

  • 相对引用的单元格地址,例如C3,在纵向复制公式时,其中行号会随之自动变化(C4,C5,C6…..);而在横向复制公式时,其中的列标也会随之自动变化(D4,E4,F4,….)。公式所在单元格与引用对象之间的行列间距始终保持一致。

E.绝对引用-通过在单元格地址前添加$符号来使单元格地址信息保持固定不变,使得引用对象不会随公式所在单元格的变化而改变,始终保持引用一个固定对象。

如果在列标前添加”$”符号,可以在公式的横向复制过程中始终保持列标不——例如$C3; 如果在行号前添加$符号,可在公式的纵向复制过程中始终保持行号不变,例如C$3。这种单元格引用只有行列某部分固定的方向也称为“混合引用”。

公式中的相对引用和绝对引用方式,可以在编辑栏中选中单元格引用部分的情况下,按F4快捷键进行循环切换

  • 跨工作表引用

=sheet1!C3

这个跨表引用由工作表名称、半角叹号、目标单元格地址三个部分组成

除了手动输入公式外,还可以采用工作表上直接点选的模式来生成引用,操作步骤如下:

1.在sheet1表的单元格中输入公式开头的”=”号
2.单击sheet2的工作表标签切换到sheet2工作表,再选择C3单元格
3.按enter结束,此时就会自动完成这个引用公式

PS: 如果跨表引用的工作表名称是以数字开头或包含空格及一些特殊字符,可以用引用包住。如:’2月’!C3

  • 跨工作簿引用

=[Book2.xlsx]Sheet1!C3
=’D:\工作目录\[Book2.xlsx]Sheet1′!$C$3

Excel 读书笔记(三)-复制公式

公式可以连同公式所在的单元格一起进行单元格“复制”,“粘贴”操作。

  • 拖拽填充柄
拖拽图中圈住的填充柄,往下拖
  • 双击填充柄

当鼠标指针显示为黑色十字填充柄的时候,也可以双击填充柄直接填充,公式所在单元格会自动向下填充,直至其相邻区域中的第一处空行。

  • 快捷键填充

选中需要填充的目标区域,其中以公式所在单元格为首行,然后按ctrl+D快捷键即可执行“向下填充”命令,如果需要向右填充,可以使用ctrl+R快捷键。

  • 选择性粘贴

复制公式所在单元格,然后选中粘贴的目标区域,在【开始】选项卡中单击【粘贴】下方的下拉按钮,在弹出的下拉菜单中选择【公式】选项,或者右键粘贴->选择性粘贴,选择公式。

  • 多单元格同时输入

选中公式所在单元格,再按住shift键的同时选中粘贴的目标区域,选中以后松开按键,将鼠标定位到编辑栏中的公式,按ctrl+enter组合键。这样就可以将最初单元格中的公式填充到目标区域中

Excel 读书笔记(二)

  • Excel 2010增加了”屏幕截图”功能,在”插入”选项卡中有一个”屏幕截图”按钮,单击这个按钮就会将当前未最小化的窗口用缩略图的方式显示在下面
  • Excel 2010中,一个工作表最多可以有1048576行(100多w行),总共170多亿单元格,如果是Excel2003或是以前的版本,一个工作表最多就只有256列,65536行
  • 如何快速到达Excel边界,选中A1(可以用Ctrl+Home或Home),然后Ctrl+方向键,可以达到边界
  • 在Excel 2003中,一个单元格最多可容纳32767个英文字符,在Excel 2010中,每个单元格可容纳的字符数理论上不受限制,但是最终还是受内存大小和2G文件的限制.
  • 被选定的单元格称为活动单元格
  • 在活动单元格上,回车,活动单元格下移,按tab键,活动单元格右移
  • 如果有选择范围,tab和enter键只会在选择范围内活动
  • 选取了一定范围,在一个单元格里输入了内容,如何将内容作用到所有选取范围的单元格中,用ctrl+enter

Excel读书笔记(一) countif 函数使用

  • countif 的语法
=countif(range,criteria)
参数range 表示条件区域——对单元格进行计数的区域。
参数criteria 表示条件——条件的形式可以是数字、表达式或文本,甚至可以使用通配

具体举例:

总结:统计criteria在range范围中出现的次数

举例2:统计A2列(姓名列)在H列中是否出现,即出现的次数

清华731分学霸揭露一个真相:别抱怨读书苦,那是你看世界的路

--读书是你此生所受的最轻的苦

摘自:电子课本网, 作者: 三立书会 ; 来源:三立书会(ID: sanlishuhui) 原文章链接: https://mp.weixin.qq.com/s/pZDqY58ZSphG3NBNo0vKsw

2019年的清华大学开学典礼上,校长邱勇点了四名优秀新生,其中就有来自云南的731分寒门学霸林万东。

林万东出生在云南宣威市阿都乡的一个小山村,那里是中国深度贫困地区。由于父亲有腰伤,无法干重活,全家的经济来源都靠母亲在昆明的一家工地搬砖背沙……如果不是因为读书,林万东可能一辈子都走不出云南;如果不是因为读书,他可能也会像父母一样一辈子打工;如果不是读书,他甚至没有机会改变自己的命运。
都说穷人家的孩子早当家,所以深知生活困苦的林万东不仅明白读书是改变人生的最好方法,他更明白,读书之苦是人生中最容易咽下的苦。

  • 条条大路通罗马 读书却是最短的捷径

一代名臣曾国藩,出身在一个穷苦的农民家庭,他自身的天赋不高,甚至可以说有点儿愚笨。但是他却通过读书,一步步从秀才奋斗为进士,又由进士被点为翰林。

后来又因为读书,修身养性,改变了此前没有眼界心胸和格局的状态,不仅成为一代“完人”,而且也给后世之人带来很多教育意义。

知识可以改变命运,读书是最简单的捷径,古往今来,皆是如此。

很多人因为年少无知,上学时并没有意识到学习的重要性,没有好好读书,也没能拿到一个好的学历,最后平白走了很多弯路,常常是脏活累活干了个遍,饱尝人间疾苦后才悔不当初。

正如白岩松所说:“孩子,除了上学,真是没有其他的路能走,考试不是唯一的路,却是最公平的那条路,不读书,你拿什么和别人拼?”

的确,人生之中众多,读书确实不是唯一的出路。而有些路眼下看上去也的确平坦又轻松,似乎可以很轻松就能抵达远方。我们也常说,条条大路通罗马,但是,最后你却会发现,读书却是最好走的那条捷径,也是人生所受最轻的苦。

  • 在所有的人生之苦中 读书是最轻的苦

常听有人这样说,如果遇到孩子不好好读书的时候,你就带他去四个地方:长途汽车客运站,火车站,高铁站和飞机场。

这四个地方,分别代表着不同的生活层次。而读书,最终将会引领我们抵达不同生活层次的通道。

曾看到过一个在网上热传的视频,一位小学生抱怨读书太苦太累了,连续三天没有完成作业,所以被父亲“惩罚”不读书只能回乡挑粪。虽然这个教育看起来有点另类,但却让孩子明白了一个道理:在人生所有要承受的苦难里面,读书之苦其实是最轻的,而且也是最体面最容易收获的。

唯累过,方知闲,唯苦过,方知甜。读书也是如此,读书虽苦,然而终究有一天你会明白:幸而数载寒窗苦,自此阡陌多暖春。

正如马云在《不吃苦,你要青春干嘛》这篇演讲中说的:“当你不去拼一份奖学金,不去过没试过的生活,整天挂着QQ、刷着微博、逛着淘宝、玩着网游,干着我80岁都能做的事,你要青春干嘛?”

千万别在该奋斗的年纪选择安逸,也千万别在该读书的时候选择放弃。能够苦读的岁月,是最无忧无虑的时光,也是此生所承受的最轻的苦。

当然,也是所谓“寒门”子弟突破阶层改变命运和圈子的最好方式。

  • 唯有读书 才能最快摆脱现有的环境

当年退学的韩寒,如今已成为作家,也算取得了不错的成就,可是他到了中年后,却告诉我们:不建议在大学前离开学校。

韩寒还曾坦言:“无论你的家庭,你的父母从事什么工作,你只要努力读书,最终成为科学家、院士、教授、公司高层、成功商人、政府高官、优秀艺术家等等等等,都是有着不小概率的。”

之前网上曾盛传两张互联网圈的大佬合影,他们每一个无一例外,都是学霸精英。

就像一个网友曾说的:这个社会,正在经历你跑步都跟不上的时代,而你可能大把时间正在荒废掉。而读书,可能是这个世界上你能抓住的为数不多的,能够提升自己生活圈子的方式。

读书这条路,它既不看重出身,甚至也不看重天赋,只看重努力和付出。只要你想,便可以随时徜徉在知识的海洋中,汲取养分。只要你付出,就总会有收获。

作家三毛告诉我们:读书多了,容颜自然改变,许多时候,自己可能以为许多看过的书籍都成了过眼云烟,不复记忆,其实他们仍是潜在的。在气质里,在谈吐上,在胸襟的无涯。

读书,不但可以改变你的气质,还能够提升你的格局。而知识,也是帮助我们人生逆袭的最有效的工具。你读过的书,正在潜移默化地影响着你,并可能改变你的一生。

寒窗苦读,可以获得更好人生的敲门砖,也让我们的视野和人脉更加广阔。

  • 读书虽苦 却可以更好地选择自己想要的人生

7月23日,华为总裁办发布了一封引起热议的邮件,宣布对8位2019届博士毕业生实行年薪管理制度,其中就有两名寒门学子。其中最高的年薪达到了200万,而保底的年薪也有89.6万。

这就是当今现实的生活中,活生生用知识改变年薪、文化改变命运的例子。读书,不仅帮助我们打开更宽广的世界,还让我们拥有了更好的自己和更多的选择机会,人生也因此而拥有了更多的可能。

著名作家龙应台曾告诉自己的儿子:我要求你读书用功,不是因为我要你跟别人比成就,而是因为,我希望你将来拥有更多选择的权利,选择有意义、有时间的工作,而不是被迫谋生。

读书无用,学历不重要,就是这个世界上最大的谎言。

但为什么大多数人宁愿吃生活的苦,也不愿吃学习的苦呢?知乎上点赞最高的答案是:大概是因为懒。学习的苦需要主动去吃,生活的苦,你躺着不动它就来了

可当我们经历了生活的苦难和考验之后,就会发现,在学校读书的时候,才是人生之中最美好的时光,而读书之苦,也着实是人生所承受最轻的苦。

所以孩啊,别再抱怨读书苦,读书才能照亮你看世界的路,并且只要你足够努力,就能拥有比你的起点更高的生活。

MYSQL一些常用操作

  • 备份一张表
CREATE TABLE targetTable LIKE sourceTable; 
INSERT INTO targetTable SELECT * FROM sourceTable; 

比较实用
  • 查看某个库总共有多少张表
SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES  WHERE table_schema = 'database_name' 
  • 查看某库某表auto_increment的当前值
//查看test_user库user表的auto_increment的值
select auto_increment from information_schema.tables where table_schema='test_user' and table_name='user';
  • 修改某库某表的auto_increment值
//修改test_user库user表的auto_increment值为1000
alter table test_user.user auto_increment=10000; 
  • 给某个字段加auto_increment
ALTER TABLE 表名 MODIFY COLUMN c_id int(11) NULL AUTO_INCREMEN

alter table customers change id id int not null auto_increment primary key;

ALTER TABLE tabelname ADD new_field_id int(5) unsigned default 0 not null auto_increment ,ADD primary key (new_field_id); 
  • MYSQL删除数据库
drop database db_name;
  • 查看库中所有的视图
show table status where comment='view';
  • 查看已有视图的创建语句
show create view VIEW_NAME; 
  • 删除视图
 DROP VIEW [IF EXISTS] view_name; 
  • mysqldump 不想因为Error而中断
mysqldump --force //--force参数
  • tee 将source命令的打印结果输出到指定文件中,便于查年source中的Error
//tee的功能是把你的所有输入和输出都记录到日志文件中去

tee /tmp/xxx.out (xxx.out为log文件的文件名)

source xxx.sql;

// 使用notee命令来关闭日志记录
notee;
  • Mysqlbinlog 查看
/usr/local/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mybinlog.000042 | less

--base64-output=DECODE-ROWS -v 这个参数是为了base64解码用的,便于看到原始的sql语句
  • 通过mysqlbinlog 和 grep 命令定位binlog 指定操作
mysqlbinlog --base64-output=DECODE-ROWS -v mybinlog.000042 | grep -i -A 10 -B 10 'delete xxx' > result.log //将结果重定向到result.log中

grep -A 后几行
grep -B 前几行

如何删除git仓库所有提交历史记录

旧项目提交到git上,会有git提交的log, 这些log 可能会有密码等敏感信息.如果不介意删除git log的话,形成一个新的仓库.可以如下操作

  • git checkout –orphan new_branch_name
  • Add all the files
git add -A
  • Commit the changes
git commit -am "message"
  • Delete the branch
git branch -D master
  • Rename the current branch to master
git branch -m master
  • Finally, force update your reposity
git push -f origin master