Excel高级功能详细文档03

公式与函数

1.1 基本公式

手动操作:

  • 输入公式以 = 开始
  • 引用单元格:=A1+B1
  • 引用区域:=SUM(A1:A10)
  • 绝对引用:=$A$1(按F4切换)

常用运算符:

  • 算术:+ - * / ^
  • 比较:= > < >= <= <>
  • 文本连接:&

1.2 常用函数

数学函数:

excel 复制代码
=SUM(A1:A10)           # 求和
=AVERAGE(A1:A10)       # 平均值
=MAX(A1:A10)           # 最大值
=MIN(A1:A10)           # 最小值
=COUNT(A1:A10)         # 计数
=ROUND(A1, 2)          # 四舍五入

文本函数:

excel 复制代码
=LEFT(A1, 3)           # 左边3个字符
=RIGHT(A1, 3)          # 右边3个字符
=MID(A1, 2, 3)         # 从第2个字符开始取3个
=LEN(A1)               # 文本长度
=CONCATENATE(A1, B1)   # 连接文本
=UPPER(A1)             # 转大写
=LOWER(A1)             # 转小写

日期函数:

excel 复制代码
=TODAY()               # 今天日期
=NOW()                 # 当前日期时间
=YEAR(A1)              # 提取年份
=MONTH(A1)             # 提取月份
=DAY(A1)               # 提取日
=DATE(2024, 1, 1)      # 创建日期

逻辑函数:

excel 复制代码
=IF(A1>60, "及格", "不及格")
=AND(A1>0, B1>0)       # 全部为真
=OR(A1>0, B1>0)        # 任一为真
=IFERROR(A1/B1, 0)     # 错误时返回0

查找函数:

excel 复制代码
=VLOOKUP(A1, A:C, 2, FALSE)    # 垂直查找
=INDEX(B:B, MATCH(A1, A:A, 0)) # INDEX+MATCH组合

1.3 Python实现公式

python 复制代码
import pandas as pd
import numpy as np

df = pd.read_excel('数据.xlsx')

# SUM
df['总和'] = df[['列1', '列2', '列3']].sum(axis=1)

# AVERAGE
df['平均'] = df[['列1', '列2', '列3']].mean(axis=1)

# IF
df['结果'] = df['分数'].apply(lambda x: '及格' if x >= 60 else '不及格')

# VLOOKUP
lookup_df = pd.read_excel('查找表.xlsx')
df = df.merge(lookup_df, left_on='ID', right_on='ID', how='left')

# CONCATENATE
df['全名'] = df['姓'] + df['名']

df.to_excel('结果.xlsx', index=False)

条件格式

2.1 突出显示单元格规则

手动操作:

  • 开始 → 条件格式 → 突出显示单元格规则

规则类型:

  • 大于/小于/等于
  • 介于
  • 文本包含
  • 重复值

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule

wb = Workbook()
ws = wb.active

# 添加数据
for i in range(1, 11):
    ws.append([i * 10])

# 大于30的单元格标红
red_fill = PatternFill(start_color='FF0000', fill_type='solid')
rule = CellIsRule(operator='greaterThan', formula=['30'], fill=red_fill)
ws.conditional_formatting.add('A1:A10', rule)

wb.save('条件格式.xlsx')

2.2 数据条

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.formatting.rule import DataBarRule

wb = Workbook()
ws = wb.active

for i in range(1, 11):
    ws.append([i * 10])

# 添加数据条
rule = DataBarRule(
    start_type='min',
    end_type='max',
    color='638EC6'
)
ws.conditional_formatting.add('A1:A10', rule)

wb.save('数据条.xlsx')

2.3 色阶

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.formatting.rule import ColorScaleRule

wb = Workbook()
ws = wb.active

for i in range(1, 11):
    ws.append([i * 10])

# 添加色阶(红-黄-绿)
rule = ColorScaleRule(
    start_type='min',
    start_color='FF0000',
    mid_type='percentile',
    mid_value=50,
    mid_color='FFFF00',
    end_type='max',
    end_color='00FF00'
)
ws.conditional_formatting.add('A1:A10', rule)

wb.save('色阶.xlsx')

图表制作

3.1 创建柱形图

手动操作:

  • 选中数据 → 插入 → 柱形图

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

# 添加数据
data = [
    ['类别', '数值'],
    ['A', 10],
    ['B', 20],
    ['C', 30],
    ['D', 25]
]
for row in data:
    ws.append(row)

# 创建柱形图
chart = BarChart()
chart.title = "销售数据"
chart.x_axis.title = "类别"
chart.y_axis.title = "数值"

data_ref = Reference(ws, min_col=2, min_row=1, max_row=5)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=5)
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)

ws.add_chart(chart, "D2")

wb.save('柱形图.xlsx')

3.2 折线图

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

wb = Workbook()
ws = wb.active

data = [
    ['月份', '销售额'],
    ['1月', 100],
    ['2月', 120],
    ['3月', 150],
    ['4月', 130],
    ['5月', 180]
]
for row in data:
    ws.append(row)

chart = LineChart()
chart.title = "月度销售趋势"
chart.x_axis.title = "月份"
chart.y_axis.title = "销售额"

data_ref = Reference(ws, min_col=2, min_row=1, max_row=6)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=6)
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)

ws.add_chart(chart, "D2")

wb.save('折线图.xlsx')

3.3 饼图

Python操作:

python 复制代码
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference

wb = Workbook()
ws = wb.active

data = [
    ['部门', '人数'],
    ['销售', 30],
    ['技术', 45],
    ['市场', 20],
    ['人事', 15]
]
for row in data:
    ws.append(row)

chart = PieChart()
chart.title = "部门人数分布"

data_ref = Reference(ws, min_col=2, min_row=1, max_row=5)
cats_ref = Reference(ws, min_col=1, min_row=2, max_row=5)
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(cats_ref)

ws.add_chart(chart, "D2")

wb.save('饼图.xlsx')

数据分析工具

4.1 单变量求解

手动操作:

  • 数据 → 模拟分析 → 单变量求解

Python实现:

python 复制代码
from scipy.optimize import fsolve

def equation(x):
    return x**2 - 4

result = fsolve(equation, 1)
print(f"解: {result[0]}")

4.2 规划求解

Python实现:

python 复制代码
from scipy.optimize import linprog

# 目标函数系数
c = [-1, -2]

# 约束条件
A = [[1, 1], [2, 1]]
b = [10, 15]

x_bounds = (0, None)
y_bounds = (0, None)

result = linprog(c, A_ub=A, b_ub=b, bounds=[x_bounds, y_bounds])
print(f"最优解: x={result.x[0]}, y={result.x[1]}")
相关推荐
夜喵YM11 小时前
基于 Spire.XLS.Free for Java 实现无水印 Excel 转 PDF
java·pdf·excel
TheNextByte112 小时前
如何将Android联系人导出为 Excel 格式
android·excel
☀Mark_LY12 小时前
java读取excel文件返回JSON
java·json·excel
Ahtacca13 小时前
拒绝重复造轮子:利用自定义注解封装POI,实现Java通用Excel解析
java·javascript·vue·excel
私人珍藏库13 小时前
[吾爱大神原创工具] Word图片批量导出并插入Excel对应单元格
word·excel
一晌小贪欢1 天前
Python 对象的“Excel 之旅”:使用 openpyxl 高效读写与封装实战
开发语言·python·excel·表格·openpyxl·python办公·读取表格
开开心心_Every1 天前
手机端课程表管理工具:支持课程导入自定义
python·游戏·微信·django·pdf·excel·语音识别
weixin_462446231 天前
Python 实战:Tkinter 实现 ZIP 中 CSV 批量转换为 Excel(支持密码 + 编码自动识别 + 进度条)
python·excel·csv转xlsx
开开心心_Every1 天前
视频无损压缩工具:大幅减小体积并保持画质
游戏·微信·pdf·excel·音视频·语音识别·tornado
开开心心_Every1 天前
安卓语音转文字工具:免费支持实时转换视频
python·游戏·微信·django·pdf·excel·语音识别