标签 excel 下的文章

来源:ExcelHome
Excel中的相对引用和绝对引用,是让很多刚刚接触Excel的朋友们非常头疼的一件事,但是,要深入学习Excel知识,这个问题还必须要充分的理解才可以。
因为相对引用和绝对引用在很多操作中都会用到,比如说:条件格式、数据有效性、函数公式、高级图表甚至宏和VBA代码。搞不清楚引用方式的话,这么多高大上的应用一切都免谈了。
公式中引用单元格或者区域时,引用的类型可分为以下三种:

相对引用

相对引用,就是当把公式复制到其它单元格中时,行或列的引用会改变。所谓行或列的引用会改变,即指代表行的数字和代表列的字母会根据实际的偏移量相应改变。

举一个例子:D5单元格输入公式=A1,当向下填充公式到D6、D7单元格的时候,公式会依次变成=A2、=A3。
pic1

如果向右填充公式到E5、F5单元格的时候,就会变成=B1、=C1……
pic2
这个相对引用其实就是朝三暮四随风倒,甘做墙头一棵草。

绝对引用

绝对引用,就是当把公式复制到其它单元格中时,行和列的引用不会改变。
举一个例子:D5单元格输入公式=$A$1 当向下填充公式的时候,无论复制填充到哪个单元格,公式依然是=$A$1 当向右填充公式的时候,无论复制填充到哪个单元格,公式还是=$A$1
pic3
这个绝对引用就是海枯石烂心不变,一生一世到永远。

混合引用

混合引用,就是行或列中有一个是相对引用,另一个是绝对引用。
举个例子:D5单元格输入公式=A$1 注意这里和上面的例子中少了一个$符号,当向下填充公式到D6、D7单元格的时候,公式依然是=A$1。
如果向右填充公式到E5、F5单元格的时候,就会变成=B$1、=C$1……
pic4
你看这里,因为在行号前面加了一个$符号,行号就固定不变了,而列标前面没有加$符号,列标就会发生变化。
混合引用还有一个用法:就是=$A1
这里和上面的例子中差不多的模样,只是$符号跑到列标前面去了,当向下填充公式到D6、D7单元格的时候,公式就会变成=$A2、=$A3……
如果向右填充公式到E5、F5单元格的时候,公式依然是=$A1 。
pic5

这个混合引用就是一半海水一半火焰,自古红颜爱大款,没钱的能滚多远是多远。
使用不同的引用方式,除了手工输入美元符号以外,可以将光标放到编辑栏内,按F4键,每按一次,美元符号就会跑到不同的地方,也就是不同的引用方式。
pic6
相对引用和绝对引用比较好理解,而混合引用则会相对复杂一些。什么时候使用什么样的引用,还需要在实际操作中多多用心揣摩领会。

1. 选择需要填充的表格,在菜单栏依次点击开始---条件格式---新建规则

1

2.点击使用公式确定要设置格式的单元格

2

3. 依次输入公式,点击格式---图案,选择颜色。点击确定。如:条件为i3、j4同时为空时,整行标记为浅红色。

3
4

1.初识openpyxl

首先,让我们了解一下什么是openpyxl。openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm 文件的Python 库。它可以创建新的Excel文件、修改现有的文件,甚至可以读写单元格中的数据、格式和公式。为了使用 openpyxl,我们需要先进行安装:

pip install openpyxl

2.创建新的 Excel 文件

现在,我们来创建一个新的 Excel 文件。在这个过程中,我们会学习如何创建工作簿、添加数据到工作表并保存文件。

from openpyxl import Workbook
#创建一个新的工作簿
wb = Workbook()

#激活默认的工作表
ws = wb.active

#在单元格中写入数据
ws['A1'] = '收入'
ws['B1'] = '支出'

#保存文件
wb.save('test.xlsx')

上面这个代码创建了一个新的 Excel 文件 budget.xlsx,并在第一个工作表的 A1 单元格和 B1 单元格中分别写入了“收入”和“支出”。

3.读取 Excel 文件

接下来,我们看看如何读取现有的 Excel 文件。在这个过程中,我们会学习如何加载工作簿和读取单元格数据。

from openpyxl import load_workbook

#加载现有的工作簿
wb = load_workbook('test.xlsx')

#激活默认的工作表
ws = wb.active

#读取单元格中的数据
income_label = ws['A1'].value
expense_label = ws['B1'].value

print(income_label) #输出:收入
print(expense_label) #输出:支出

这段代码加载了之前创建的 budget.xlsx文件,并读取了 A1 和 B1 单元格中的数据。

4.修改 Excel 文件

我们还可以修改现有的 Excel 文件中的数据,然后保存修改后的文件。


#修改单元格中的数据
ws['A2'] = '5000'
ws['B2'] = '1500'
#保存文件
wb.save('budget_modified.xlsx')

这段代码在 A2 单元格中写入了收入 5000 元,在 B2 单元格中写入了支出 1500 元,并将文件保存为 budget_modified.xlsx。

5.处理多个工作表

有时候,我们需要在一个 Excel 文件中处理多个工作表。下面的代码展示了如何创建新工作表并在不同工作表中写入数据。

#创建新的工作表
ws1 = wb.create_sheet("一月")
ws2 = wb.create_sheet("二月")

#在不同的工作表中写入数据
ws1['A1'] = '收入'
ws1['B1'] = '支出'
ws1['A2'] = 6000
ws1['B2'] = 2000

ws2['A1'] = '收入'
ws2['B1'] = '支出'
ws2['A2'] = 7000
ws2['B2'] = 2500

#保存文件
wb.save('budget_modified.xlsx')

这段代码创建了两个新的工作表“ 一月”和“二月”,并在这些工作表中分别写入了收入和支出数据。

7.实战案例-读取和更新预算数据

最后,我们来看看如何读取和更新预算数据。

from openpyxl import load_workbook

# 加载现有的工作簿
wb = load_workbook('family_budget.xlsx')
ws = wb.active

# 读取某月的预算数据
month = '三月'
for row in ws.iter_rows(min_row=2, values_only=True):
    if row[0] == month:
        print(f"{month}的收入是{row[1]}元,支出是{row[12]}元,剩余预算是{row[3]}")

# 更新某个月的预算数据
for row in ws.iter_rows(min_row=2):
    if row[0].value == '三月':
       row[1].value == 6500 # 更新收入
       row[2].value == 2700 # 更新支出
       row[3].value ==  row[1].value - row[2].value # 重新计算剩余预算

# 保存修改后的文件
wb.save('family_budget.xlsx')

我们读取了三月的预算数据,并更新了三月的收入和支出。

说明

LEN 返回文本字符串中的字符个数。

LENB 返回文本字符串中用于代表字符的字节数。

重要:
这些函数可能并不适用于所有语言。
只有在将 DBCS 语言设置为默认语言时,函数 LENB 才会将每个字符按 2 个字节计数。 否则,函数 LENB 的行为与 LEN 相同,即将每个字符按 1 个字节计数。
  • 支持 DBCS 的语言包括日语、中文(简体)、中文(繁体)以及朝鲜语。

语法

LEN(text)

LENB(text)

LEN 函数语法具有下列参数:

  • text 必需。 要查找其长度的文本。 空格将作为字符进行计数。

示例

abc中国abc中国 三个字符串,用len()、lenb()返回值的差异。

实例1

应用

1.判断A1中是否包含汉字

=IF(LEN(A1)=LENB(A1),"无汉字","有汉字")

实例2

2. 带单位的单元格计算

LEN(B2)字符串的长度
LEN(B2)-1 去掉单位的长度
LEFT(B2,LEN(B2)-1)) 去掉单位后的字符串
如果单元格不包含单位,则执行C2*B2,否则(去掉单位)执行C2*LEFT(B2,LEN(B2)-1)

=IF(LEN(B2)=LENB(B2),C2*B2,C2*LEFT(B2,LEN(B2)-1))

实例3