跳转到内容

工作簿的自定义函数

自定义函数是您以简短名称命名的公式。只需在“命名区域”面板中创建一次,然后就能像 SUM 一样,在工作簿的任何单元格中使用它:=МАРЖА(D2;E2)。

为什么需要。 价目表有一百行,每行都要计算毛利率:=(D2-E2)/D2、=(D3-E3)/D3……重复一百次。使用自定义函数:

  • 每个单元格中只需写简短的 =МАРЖА(D2;E2),一眼就能看懂,无需解释;
  • 规则只写在一个地方。如果决定以不同方式计算毛利率,只需修改函数,所有使用它的单元格都会重新计算;
  • 在第一百行不会因括号出错:括号只存在于函数本身中。
  • 函数有参数,就像几个“小窗口”。МАРЖА 有两个窗口:“цена”和“себестоимость”。
  • 在函数的公式中,您写明如何处理这些窗口:(цена-себестоимость)/цена。这里没有单元格地址,只有窗口的名称。
  • 当您在单元格中写 =МАРЖА(D2;E2) 时,括号中的第一个值(D2)进入第一个窗口(“цена”),第二个值(E2)进入第二个窗口(“себестоимость”)。
  • 顺序很重要。 括号中的值与参数顺序相同。价格 100,成本 70:=МАРЖА(100;70) 得到 0,3(30 %),而 =МАРЖА(70;100) 得到 −0,43,因为价格和成本的位置对调了。
  • 括号中可以写单元格地址、数字或另一个公式:=МАРЖА(D2;E2)、=МАРЖА(100;70)、=МАРЖА(D2*1,2;E2)。空单元格按零计算。
  • 结果是动态的:修改 D2 中的价格,毛利率会自动重新计算。这正是自定义函数与代理用代码计算的区别:代理写入的是现成的数字,这些数字本身不会重新计算。

“命名区域”面板

  1. 打开表格。点击工具栏上的“命名区域”按钮(书签图标)。如果浏览器窗口较窄,看不到该按钮,它会隐藏在“更多工具”菜单中。另一种方式是编辑栏左侧地址框旁的箭头“命名区域列表”,其最后一项为“命名区域…”。
  2. 工作表右侧会打开“命名区域”面板,按钮保持按下状态。工作表不会关闭:面板打开时,仍可在工作表中选择单元格并输入公式。
  3. 面板顶部是“名称”列表(在新工作簿中显示“还没有名称”)和“+ 添加”按钮,其下是表单,底部是“取消”和“保存”。光标直接位于“名称”字段中。
  4. 表单会立即准备好为所选区域创建名称:“区域1”“区域2”……。如果所选区域已有名称,表单会打开该名称。
  5. 面板宽度可以通过拖动其左边缘调整。
  6. 关闭面板:点击标题栏中的“关闭”叉号,按 Escape,或再次点击“命名区域”。
  7. 右侧一次只能打开一个工作簿面板:如果打开“评论”“版本历史”“通知”“代理”、图表编辑器、“数据验证”“条件格式”或保护面板,“命名区域”面板会关闭,反之亦然。

方式一:自己创建函数

  1. 打开“命名区域”面板。如果表单中已打开其他名称,点击“+ 添加”。
  2. 表单下方有两个选项的切换开关:“区域”(书签图标)和“函数”(f(x) 图标)。选择“函数”后,会出现“名称”“参数”和“公式”字段。空字段中会浅色显示填写示例:“цена; себестоимость”和“=(цена - себестоимость) / цена”。
  3. “名称”:字段中浅色显示示例“МАРЖА”。输入 МАРЖА。
  4. “参数”:输入 цена; себестоимость。可以用“;”或“,”分隔。“在单元格中”一行会立即显示该函数在单元格中的写法:=МАРЖА(A2; B2),即每个参数对应一个单元格,顺序相同。
  5. “公式”:输入 (цена-себестоимость)/цена。开头的“=”号不必输入,保存时会自动补上。
  6. 保存前请检查函数。在“在单元格中”一行下方是“试算”:每个参数一个字段,字段上标有参数名称。在“цена”中输入 100,在“себестоимость”中输入 70,“结果”中会出现 0,3。在所有字段填写完整、公式写完整之前,结果处显示破折号。修改公式或数值,结果会立即变化。
  7. 点击“保存”。面板保持打开,列表中会出现所选行,带有 f(x) 图标:“МАРЖА (цена; себестоимость)”。面板底部会出现垃圾桶按钮“删除名称”。
  8. 将光标放在 F2 单元格中(无需关闭面板),输入 =МАРЖА(D2;E2),然后按 Enter。
  9. 要计算所有行,将 F2 右下角的小方块向下拖动:F3 中会出现 =МАРЖА(D3;E3),F4 中为 =МАРЖА(D4;E4),依此类推。
  10. 毛利率以小数表示:0,3 即 30 %。要显示百分比,请选中 F 列,然后选择“数字格式”(按钮“123”)→“百分比”。

第二个例子:函数中包含数字(增值税)。 点击“+ 添加”,重复步骤 2–7,填写其他值:

  • “名称”为 НДС,“参数”为 сумма,“公式”为 сумма*0,2。
  • “在单元格中”会显示 =НДС(A2);在“试算”的“сумма”字段中输入 100,“结果”为 20。
  • 在单元格中输入 =НДС(D2)。金额为 100 时,结果为 20。
  • 公式中的小数用逗号书写(0,2),调用时括号中的值用“;”分隔。与俄语界面中普通公式的写法相同。
  • 税率变化时:点击列表中的 НДС,把 0,2 改为新数值,然后点击“保存”。所有 =НДС(…) 单元格都会重新计算。

为区域命名

  1. 在工作表上选中一个区域,例如含有价格的 A2:A100,然后打开面板。切换开关选中“区域”,“区域”字段中是所选地址。
  2. “名称”:将“区域1”改为 Цены。“在单元格中”会显示 =SUM(Цены)。
  3. 如需其他区域,请点击“区域”字段,然后用鼠标在工作表上框选单元格:地址会自动填入。在字段等待选择时,它周围会显示彩色边框,可以多次框选。当您切换到面板中的其他字段,或在该字段中按 Escape 或 Enter 时,字段将停止跟随工作表。Enter 同时会保存名称;在此字段中按 Escape 只会停止跟随,再按一次 Escape 才会关闭面板。也可以直接输入地址:A2:A100。
  4. 点击“保存”,列表中会出现带书签图标的一行:“Цены · A2:A100”。
  5. 当选区恰好为该区域时,编辑栏左侧地址框中会显示“Цены”。在框中输入 цены 并按 Enter,或在编辑栏旁的“命名区域列表”中选择“Цены”,即可选中该区域。自定义函数不会显示在此列表中。

方式二:请代理完成

  1. 点击表格标题栏中的“代理”。
  2. 用日常语言描述,例如:“创建函数 МАРЖА,参数为 цена 和 себестоимость:(цена − себестоимость) / цена,并计算 F 列中的毛利率。”
  3. 代理的回答中会写明“已定义函数 МАРЖА(цена; себестоимость)”,并填写 F 列。如果同名函数已存在,代理会替换其公式,并写明“已重新定义函数……”。
  4. 该函数会出现在“命名区域”面板的列表和 f(x) 列表中,之后您可以手动使用它。
  5. 删除函数也可以用文字:“删除函数 МАРЖА”。
  6. 如果不满意修改结果,请打开“版本历史”,点击“代理修改前”标记,然后点击“切换到此版本”,再点击“切换”。

方式三:从列表中插入现成的函数

  1. 将光标放在单元格中。
  2. 点击编辑栏左侧的“f(x)”。
  3. 顶部是“您的函数”组。将鼠标指向 МАРЖА 并等待半秒:会显示其公式。
  4. 点击 МАРЖА,单元格中会出现 =МАРЖА(。补充 D2;E2) 并按 Enter。
  5. 也可以搜索:在“搜索函数”框中输入“мар”,自定义函数会与内置函数一起显示。
  6. 更快的方法:在单元格中开始输入名称,例如 =МАРЖ:提示中会出现“МАРЖА(цена; себестоимость)”,按 Tab 或 Enter 即可连同括号一起插入。

修改、重命名、删除

  • 修改:点击“名称”列表中的名称,它会在表单中打开,并且区域会在工作表上高亮显示。光标留在列表中,因此可以直接切换到下一个名称。对于函数,修改“参数”或“公式”后,“在单元格中”和“试算”会立即更新;打开时“试算”字段为空。点击“保存”,所有使用此函数的单元格都会重新计算。
  • “取消”会撤销未保存的修改:表单恢复为工作表上所选区域的名称;如果该区域没有名称,则恢复为新名称。面板保持打开。
  • 再次打开的函数,在“公式”字段中的显示方式与单元格中的公式相同:小数用逗号(0,2),内置函数用英文名称(ОКРУГЛ 将显示为 ROUND)。
  • 重命名:修改“名称”并点击“保存”。单元格中的公式会自动改写为新名称。
  • 删除:选中名称并点击垃圾桶“删除名称”。表单会以新名称开始,面板保持打开。使用该函数的单元格中会出现 #NAME?。
  • “名称”列表的每一行包括:图标(书签表示区域,f(x) 表示函数)、名称,以及颜色较浅的地址(“· A1:B10”)或函数参数(“(цена; себестоимость)”)。
  • 其他工作表上的名称会在列表中显示,名称后附有工作表名(“·”之后),但不能在此选中:请打开创建该名称的工作表。
  • 面板打开时切换到其他工作表,表单中未保存的修改会丢失,表单将以该工作表上的选区重新开始。

需要了解的事项

  • 函数在工作簿的所有工作表中都有效。
  • 大小写不重要:=маржа(D2;E2) 与 =МАРЖА(D2;E2) 相同。
  • 也可以创建没有参数的函数:“名称”为 КУРС,“参数”为空,“公式”为 90。调用时需要带括号:=КУРС()。
  • 函数公式中可以引用单元格,例如 =сумма*$B$1(若税率位于 B1)。这样的引用始终指向创建函数的那张工作表,即使函数是从其他工作表调用的。
  • 函数可以调用其他自定义函数,也可以调用自身。
  • 名称:字母(包括俄文字母)、数字、“”和“.”,不含空格;以字母或“”开头;最多 255 个字符。
  • 不能将函数命名为单元格地址(如 A1、D2),也不能命名为 ИСТИНА、ЛОЖЬ、TRUE、FALSE 或内置函数(如 SUM、СУММ、ОКРУГЛ)。
  • 名称在整个工作簿中唯一:如果某个区域或函数已在任何工作表上使用了该名称,则不能再创建相同的名称。
  • 每张工作表最多 500 个名称(区域和函数合计)。函数最多 253 个参数,公式最多 8 192 个字符。
  • 相互调用或自我调用的函数,嵌套层数最多 128 层。
  • 计算限制与普通公式相同(见《公式和函数》中的“限制”部分)。
  • “试算”是一次试算:不会向表格写入任何内容。其字段中的数字按您语言中公式的写法输入(在俄语界面中为 0,2);非数字的内容按文本处理。
  • 下载为 XLSX 时,自定义函数会被保留,并可在 Excel 365 中使用。加载含有此类函数的 XLSX 文件时,它们会出现在工作簿中。
  • 只有有编辑权限的人才能创建和修改函数。在只读表格中,没有“命名区域”按钮和 f(x) 列表,但使用了自定义函数的公式仍会计算。
  • 在数据透视表工作表和版本查看中,没有“命名区域”按钮和面板:打开的面板会关闭,且不会自动恢复。
  • 在手机上,面板在工作表下方全宽显示,最多占屏幕高度的 45 %;其中的“名称”列表最多占 20 %。列表和字段一起滚动,“保存”始终可见。在手机上框选单元格填写“区域”字段很不方便,请用键盘输入地址,例如 A2:A100。
屏幕上显示 原因 怎么办
“已有同名的内置函数” 名称与内置函数冲突(SUM、СУММ) 选择其他名称,例如 МОЯ_СУММА
“此名称已存在” 该工作簿中已有同名的区域或函数(任何工作表) 选择其他名称,或打开并修改已有的名称
“请检查名称” 名称中有空格或多余字符,它类似单元格地址(A1),或为 ИСТИНА/ЛОЖЬ 连写,例如 ЦЕНА_С_НДС
“请检查公式” “公式”字段为空,或括号、引号未闭合 补全公式,检查括号和引号
“请检查名称和参数” 参数重复(цена; Цена),或不适合作为名称(含空格或形如 A1) 为参数设置不同的连写名称
“请检查名称和区域” 本工作表上已有 500 个名称 删除不需要的名称
“请检查区域” “区域”字段中的地址无法解析 在工作表上框选单元格,或输入形如 A1:B10 的地址
在“区域”字段中选择单元格时,地址不再变化 字段已停止跟随工作表:您切换到了面板中的其他字段,或在其中按了 Escape 或 Enter 再次点击“区域”字段,然后框选单元格
命名区域面板自行关闭 打开了其他工作簿面板(“评论”“版本历史”“通知”“代理”、图表编辑器、“数据验证”“条件格式”、保护),您切换到了数据透视表工作表,或打开了某个版本 再次点击“命名区域”;如果在数据透视表工作表上,先返回普通工作表
单元格中显示 #VALUE! 括号中的值比参数多或少,或者填入的是文字而非数字 检查值的数量及其顺序
单元格中显示 #NAME? 名称拼写错误,函数已被删除,或无参数函数调用时没有括号(=КУРС) 在 f(x) 列表中检查名称;调用时加括号:=КУРС()
=МАРЖА(D2,E2) 显示 #NAME? 在俄语界面中,括号中的值用“;”分隔,而非逗号 写成 =МАРЖА(D2;E2)
МАРЖА 显示 #DIV/0! 价格为零,或价格单元格为空 填写价格
毛利率为负数 括号中值的顺序颠倒 第一个放价格,第二个放成本
“结果”中显示破折号 “试算”的字段未全部填写,“名称”或“公式”为空,或公式无法解析 填写所有字段,检查括号和引号
“结果”中显示 #DIV/0!、#NAME?、#VALUE! 公式在这些值上出错:除以零、名称未知,或文字代替数字 检查公式和试算用的值