如何在Excel中缩写全名中的中间名

如何在Excel中将中间名缩写为中间名首字母 - 教程

设置名称格式可能是一个手动且缓慢的过程。这是一种在给定全名时将中间名转换为中间名首字母的快速方法。

内容:

1. 公式

2. 解释

2.1. 提取名字

2.2. 摘录和缩写中间名

2.3. 提取姓氏

2.4. 组合公式

公式

要将全名(如“John Riley Smith”)中的中间名首缩写为“John R. Smith”,请使用以下公式(假设名称位于单元格 A1 中):

= TEXTBEFORE(A1, " ") & " " & LEFT(TEXTAFTER(A1," ")) & ". " & TEXTAFTER(A1," ", 2)

如果您无权访问最新的 Excel 公式,则此公式可用于大多数 Excel 版本:

= LEFT(A1, FIND(" ", A1) - 1) & " " & LEFT(MID(A1, FIND(" ", A1) + 1, LEN(A1)), 1) & ". " & RIGHT(A1, LEN(A1) - FIND(" ", A1, FIND(" ", A1) + 1))

解释

为了在全名中缩写中间首字母,我们需要执行三个单独的步骤。

使用 TEXTBEFORE 返回 Excel 中第一个空格之前的所有内容

第一步是返回名字,我们可以使用 TEXTBEFORE 返回第一个空格之前的所有内容。

= TEXTBEFORE(A1, " ")
如何在Excel中使用LEFT和TEXTAFER函数缩写中间首字母

接下来,我们需要缩写中间名首字母。我们可以通过返回中间名然后取第一个字母来做到这一点。我们可以结合 LEFT 和 TEXTAFER 来提取它。

= LEFT(TEXTAFTER(A1," "))
使用 TEXTAFTER 返回 Excel 中第二个空格之后的所有内容

最后,我们需要返回姓氏。我们可以再次使用 TEXTAFTER,但这一次,我们需要在实例编号参数下使用“2”来告诉函数在第二个空格(应该只是姓氏)之后拉取所有内容。

=TEXTAFTER(A1," ", 2)
如何在Excel中将中间名缩写为中间名首字母 - 完整公式

使用“&”和正确的空格和标点符号将所有内容组合在一起,得到:

= TEXTBEFORE(A1, " ") & " " & LEFT(TEXTAFTER(A1," ")) & ". " & TEXTAFTER(A1," ", 2)



如何在Excel中将全名分为名字和姓氏

如何在Excel中按第一个和最后一个拆分全名

通常,您会收到一个名字和姓氏列表,合并为一个全名,需要将它们分开。这是轻松完成此操作的快速方法。

内容:

1. 公式

2. 解释

2.1. 提取名字

2.2. 提取姓氏

2.3. 将两个公式组合在一起

公式

要提取名字,可以使用以下公式:

= LEFT(A1, (FIND(" ", A1, 1) - 1))

要提取姓氏,可以使用以下公式:

= RIGHT(A1 , LEN(A1) - SEARCH(" ", A1))

这两个公式将作为独立公式使用,但它们也可以使用 HSTACK 组合使用。

= LET(
  range, B3:B8,
  first_name, LEFT( range, (FIND(" ", range, 1) - 1)),
  last_name, RIGHT(range, LEN(range) - SEARCH(" ",range)),
  HSTACK(first_name,last_name))

在此示例中,您只需更改范围“B3:B8”以匹配您的全名范围,公式将完成其余工作。

解释

这个问题有两个部分。我们如何提取名字,以及如何提取姓氏。

由于名字和姓氏通常用空格分隔,因此使用空格将名字与正确名称分开通常是最简单的方法。

如何使用公式提取单元格的名字

如何使用公式提取Excel中单元格的名字

为了提取名字,我们将在单元格中搜索空格,并将所有内容返回到该空格的左侧

= LEFT(A1, (FIND(" ", A1, 1) - 1))

在此公式中,FIND 函数在单元格 A1 的文本中查找“ ”的位置,并返回文本中“ ”的位置,假设它是 5。

然后使用 LEFT 函数从该特定字符的左侧提取文本。在这种情况下,公式使用单元格 A1 中的文本和左侧的字符数,这是 FIND 函数返回的值 – 1(因为我们不想包含字符本身)。

如何使用公式从单元格中提取姓氏

如何使用公式从Excel中的单元格中提取姓氏

同样,为了提取姓氏,我们正在搜索同一个单元格并将所有内容返回到空格的右侧

= RIGHT(A1, LEN(A1) - SEARCH(" ", A1))

在此公式中,SEARCH 函数返回单元格中“ ”字符的位置,LEN 函数返回单元格中的字符总数。

然后,RIGHT 函数通过从单元格中的字符总数中减去“”字符的位置来提取“”字符右侧的所有字符。

如何将两个公式组合在一起

使用 LET 和 HSTACK 将两个公式合并为一个

为了将这两个公式组合在一起,我们将使用 HSTACK 函数。此函数允许我们水平堆叠两个不同的数组公式。




开头的 LET 函数仅用于创建清理后的公式,因为此函数允许您命名计算。例如,“范围”只需要定义为“B3:B8”一次,并且可以在整个公式中多次使用。

LET 还允许我们将整个名字提取公式称为“first_name”,将姓氏公式称为“last_name”。在 HSTACK 函数中使用那些,而不是完整的、更复杂的公式。

= LET(
    range, B3:B8,
    first_name, LEFT( range, (FIND(" ", range, 1) - 1)),
    last_name, RIGHT(range, LEN(range) - SEARCH(" ",range)),
    HSTACK(first_name,last_name))



如何在Excel中将名字和姓氏合并为全名

如何在Excel中将名字和姓氏合并为全名

通常,您会收到一个名称列表,这些名称分为两个单独的列,第一列和最后一列,需要将它们合并为一个全名。这是轻松完成此操作的快速方法。

内容:

1. 公式

2. 解释

3. 示例

3.1. 组合名字和姓氏

3.2. 组合名字、中间名和姓氏

公式

假设名字在 A 列中,姓氏在 B 列中,此公式会将这两个部分合并为一个全名

= A1 & " " & B1

此公式将合并名称的两个部分,用空格分隔它们。

如果要用逗号和空格分隔它们,可以像这样更改公式:

= A1 & ", " & B1

解释

在 Excel 中,“&”符号用于将两个或多个文本字符串连接或联接在一起。在两个单元格上使用时,可以合并两个单元格的内容。

例如,如果单元格A1中有一个字符串“John”,单元格B1中有一个字符串“Smith”,则可以使用串联公式= A1&B1将它们连接在一起并在另一个单元格中显示“JohnSmith”。

在我们的例子中,虽然我们希望在两个名称之间出现一个空格,以便我们可以在 A1 和 B1 之间添加一个“”,就像公式 = A1 和 “” 和 B1 中一样,以显示“John Smit

例子

1. 如何将名字和姓氏合并到一个单元格中

如何在Excel中将名字和姓氏合并到一个单元格中

如果我们在 A 列中有一个名字列表,在 B 列中有姓氏列表, ,我们可以使用以下公式将它们组合成一个完整的全名:

= B3 & " " & C3

此公式将合并 A1 和 A2 中的内容,并用空格分隔它们。

TEXTJOIN 函数也可用于连接它们,如下所示:

= TEXTJOIN(" ",, A1:B1)

2. 如何将名字、中间名和姓氏合并到一个单元格中

如何将名字、中间名和姓氏合并到一个单元格中 - Excel 教程

同样,如果我们有一个名字、中间名和姓氏,我们可以使用与上一个示例相同的方法,使用以下公式:

= B12 & " " & C12 & " " & D12

但是,在这种情况下,TEXTJOIN 函数可能是更好的选择,因为它将消除前一个函数中的一些重复键入,并允许您轻松组合任意数量的单元格:

= TEXTJOIN(" ",, A1:C1)



如何在Excel中将特定字符右侧的所有内容提取

如何在Excel中将特定字符右侧的所有内容提取

在 Excel 中花费的大量时间用于将可能不会立即有用的数据清理为有价值的内容。能够将大型文本单元格分解为更具可操作性的部分非常有帮助。

内容:

1. 公式

2. 解释

3. 示例

3.1 – 从全名中提取姓氏

3.2 – 从电子邮件地址中提取电子邮件域

公式

此公式将返回单元格 A1 中“@”字符右侧的所有内容。

= RIGHT(A1, LEN(A1) - SEARCH("@",A1))

如果您使用的是最新版本的Excel,则可以使用新公式之一 TEXTAFTER返回特定字符后的所有内容:

= TEXTAFTER(A1,"@")

解释

要将所有内容返回到Excel中单元格中特定字符的右侧,我们需要一起使用RIGHT函数和SEARCH函数。

以下是 RIGHT 函数的语法:

RIGHT(text, [num_chars])

文本参数是要从中提取字符的单元格。num_chars 参数是可选的,指定要提取的字符数。如果省略此参数,Excel 将返回特定字符右侧的所有字符。

以下是搜索函数的语法:

SEARCH(find_text, within_text, [start_num])

find_text参数是要查找的特定字符。within_text参数是要搜索特定字符的单元格。start_num 参数是可选的,它指定开始搜索的字符。如果省略此参数,Excel 将从单元格的第一个字符开始搜索。

我们可以组合这些函数,使用以下公式将单元格中特定字符右侧的所有内容返回:

= RIGHT(A1, LEN(A1) - SEARCH("@", A1))

在此示例中,A1 是要从中提取字符的单元格,“@”是要查找的特定字符。SEARCH 函数返回单元格中“@”字符的位置,LEN 函数返回单元格中的字符总数。然后,RIGHT 函数通过从单元格中的字符总数中减去“@”字符的位置来提取“@”字符右侧的所有字符。

注意:

仅当单元格中存在特定字符时,此公式才有效。如果该字符不存在,则 SEARCH 函数将返回错误。若要避免此错误,可以使用 IFERROR 函数在 SEARCH 函数返回错误时返回默认值。例如:

= IFERROR(RIGHT(A1, LEN(A1) - SEARCH("@", A1)), "Character not found")

如果单元格中存在“@”字符,则此公式将返回该字符右侧的所有内容,如果单元格中不存在“@”字符,则返回文本“找不到字符”。

例子

1. 如何从全名中提取姓氏

如何从全名中提取姓氏并删除名字,excel示例

如果我们在 B 列中有一个全名列表,并且想在旁边拉出姓氏,我们可以使用以下公式:

= RIGHT(B2, LEN(B2) - SEARCH(" ",B2))

此公式将提取空格后的所有内容,在本例中为姓氏。

如果全名用逗号“,”或逗号和空格“分隔,则可以切换上式中的空格以获得相同的结果。

如果要搜索的字符或字符组在名称中不存在,则将返回#VALUE错误。

2.如何从电子邮件中提取域

如何从电子邮件中提取域并删除用户名,excel示例

同样,如果我们在B列中有一个电子邮件地址列表,并且想要提取与每个地址关联的电子邮件域,则可以使用以下公式:

= RIGHT(B2, LEN(B2) - SEARCH("@",B2))

此公式将提取“ @”符号之后的所有内容,留下电子邮件域名并删除用户名。




多表引用和公式 – Excel 中的 3-D 引用

三维引用是对工作簿中多个工作表中的单元格区域的引用。例如,如果您有一个包含多个工作表(Sheet3、Sheet1 和 Sheet2)的工作簿,并且您希望在每个工作表上引用一系列单元格,则可以使用三维引用。

内容:

1. 什么是三维参考?

1.1 它们可以在哪里使用?

2. 创建三维参考

2.1. 移动、插入和删除工作表

3. 示例

3.1. 在多个工作表中对相同的单元格范围求和

什么是三维参考?

Excel 中的三维引用是对工作簿中多个工作表中的单元格区域的引用。它允许您使用单个公式或函数引用多个工作表上的单元格区域,从而更轻松地对在这些工作表中以类似方式组织的数据执行计算和分析。

要创建三维参照,请使用要包括的区域的工作表名称和单元格参照,用 : 符号分隔。例如,如果要引用工作表 3、工作表 1 和工作表 2 上的区域 A1:B2,则应使用以下三维引用:

Sheet1:Sheet3!A1:B2

此三维引用将包括三个工作表(Sheet3、Sheet1 和 Sheet2)中每个工作表上区域 A1:B2 中的所有单元格。

什么是三维参考?

应该在哪里使用 3-D 参考?

通常,只要您在多个工作表中以类似的方式组织数据,并且您希望以一致的方式处理该数据,三维引用就会很有用。它们允许您使用单个公式或函数引用多个工作表上的单元格范围,从而节省时间和精力。

最常见的用途是,当您的数据在多个工作表中以类似的方式组织,并且您希望对每个工作表执行相同的计算时。例如,您可能有一个工作簿,其中包含来自不同季度的数据,并且您希望将该数据合并到单个工作表中以创建年度报告。使用 3-D 引用,您可以在每个季度的数据在其自己的工作表上引用这些数据,然后将该数据合并到单个工作表中以创建年度报告。

如何创建三维参考

如何创建三维参考,示例三维参考

若要在 Excel 中创建三维引用,请按照下列步骤操作:

  1. 打开包含要包含在三维参考中的工作表的工作簿。
  2. 选择要在其中输入三维参照的单元格。
  3. 键入要包括在三维参照中的图纸的图纸名称,用 : 符号分隔。例如,如果要包括工作表 3、工作表 1 和工作表 2,则应键入 Sheet3:Sheet1。
  4. 键入 !符号,用于将图纸名称与单元格引用分开。
  5. 键入要包含在三维引用中的区域的单元格引用。例如,如果要包括区域 A3:B1,则应键入 A2:B1。
  6. 将任何函数添加到公式中,例如 SUM、PRODUCT 或任何基本函数。更高级的功能通常不起作用。
  7. 按 Enter 键完成三维参考。

下面是输入公式时公式外观的示例:

=SUM(Sheet1:Sheet3!A1:B2)

开始编写公式后,还可以通过使用 Shift 键选择多个工作表来更轻松地创建它们。Excel将理解您希望在计算中包含任何突出显示的工作表。这样:

在 Excel 中创建 3D 引用的分步示例

输入三维引用后,可以在公式或函数中使用它对引用中包含的所有工作表中的单元格区域执行计算或分析。

移动、插入和删除图纸如何影响三维参照

在工作簿中移动工作表时,包含这些工作表的任何三维引用都将自动更新以反映新的工作表顺序。

移动、插入和删除图纸如何影响三维参照
= SUM('Region 1:Region 4'!B2:B10)

例如,如果在工作表“区域 3”、“区域 2”、“区域 10”和“区域 1”上具有对区域 B2:B3 的三维引用,则将区域 4 移动到工作簿的开头,则三维引用将更新为仅包括区域 2、3 和 2 上的区域 B10:1。

将工作表移出引用如何更改计算

“区域 1”和“区域 4”充当引用的开始和结束。将包括这些工作表之间的任何工作表。将区域 2 从它们之间移出将删除它。

这同样适用于添加新工作表。如果我们事后在区域 3 中有一些补充销售,我们可以简单地将新工作表拖到已建立的公式范围内:

如何将工作表添加到三维参考

这意味着您可以重新排列工作簿中的工作表,而无需手动更新包含这些工作表的任何三维引用。这可以很方便并节省您的时间,尤其是在工作簿中有大量三维引用的情况下。

但是,请务必注意,如果将工作表移动到其他工作簿,则包含该工作表的任何三维引用将不再有效,您将需要手动更新它们。这是因为三维引用只能包含同一工作簿中的工作表。

如何在多个工作表中对相同范围的单元格求和

如何在多个工作表中对相同范围的单元格求和

下面是如何在 Excel 中的公式中使用三维引用对多个工作表中的相同单元格区域求和的示例。在这种情况下,请从包含月销售额的单独工作表中计算季度销售额:

= SUM(July:September!B3:B10)

在此公式中,SUM 函数用于计算 3 月、10 月和 <> 月每个工作表上范围 B<>:B<> 中的值的总和。: 符号用于指示该范围包括 <> 月至 <> 月之间的所有工作表,以及 !符号用于将工作表名称与单元格引用分开。

为了计算第四季度的销售额,我们的公式将略有改变为:

= SUM(October:December!B3:B10)



如何在Excel中将日期舍入到最接近的月份的第一天

如何在Excel中将日期舍入到最接近的月份的第一天

内容:

公式

解释

示例 – 将日期舍入到最接近的月份的第一天

公式

= EOMONTH(date, (DAY(date) > DAY(EOMONTH(date, 0)) / 2) - 1) + 1

通过单元格引用或硬编码值将任何日期输入此公式,此公式会将给定日期向上或向下舍入到最接近的月份的第一天。

解释

让我们使用以下示例将公式分解为单独的部分:

如何将日期舍入到最近月份的第一天的说明
= EOMONTH(日期, (DAY(date) > DAY(EOMONTH(date, 0)) / 2) - 1) + 1

为了正确计算输入日期是应该向上舍入还是向下舍入,我们需要采取几个步骤。

首先,我们使用 DAY 函数拉出一天。 在本例中 5.

我们还需要知道本月有多少天。为此,我们使用 DAYEOMONTH 函数。EOMONTH 从我们的日期开始返回该月的最后一天。在本例中为 4 年 30 月 2022 日。然后,我们使用 DAY 从该日期中提取 30,然后除以 2 以获得向上或向下舍入之间的截止日。

由于 30 / 2 = 15,并且我们的输入日期为 5,因此我们的日期小于 15,我们需要向下舍入。如果日期大于 15,则四舍五入。

红色括号之间的所有内容都返回 TRUE 或 FALSE 值,并且由于 TRUE = 1 和 FALSE = 0,因此我们从该值中减去 1 以给出 EOMONTH 函数的 month 参数。TRUE 将返回当月的最后一天(向上舍入),FALSE 将返回上个月的最后一天(向下舍入)。

所有这些,给了我们最近一个月的第一天的前一天,所以我们只需要在最后的公式上添加一个,给我们最近的一个月的第一天。

注意:

– 此公式将适用于所有月份,无论短期还是长期。即使是像二月这样的月份也会自动校正和调整闰年。

– 如果您正在使用的日期具有与之关联的时间戳,但不需要它们,我们可以通过添加 INT 函数来去除它们,如下所示:

= INT(EOMONTH(date, (DAY(date) > DAY(EOMONTH(date, 0)) / 2) - 1) + 1)

使用 INT 会将日期舍入到最接近的整数,从而删除 Excel 的日期保持约定中的时间数据(存储为小数)。

如何将日期舍入到最近月份的第一天

在此示例中,我们在 B 列中有一个日期列表,并希望将所有这些日期四舍五入到最接近的月份的第一天。

通过输入我们的公式:

= EOMONTH(B3, (DAY(B3) > DAY(EOMONTH(B3, 0)) / 2) - 1) + 1

在 C 列中的日期旁边,我们可以快速计算和舍入日期。可以在工作簿中的任何位置重复此过程。

将日期舍入到最近月份的第一个的示例和公式



如何在Excel中使用公式获取工作表名称 – 3种方法

如何在Excel中使用公式获取工作表名称 - 3种方法

在具有许多不同选项卡的工作簿中工作时,能够提取、引用和使用特定的工作表名称可以节省大量时间。在本教程中,我们将介绍如何使用公式获取工作表名称的几种不同方法。

内容:

P可识别用例

方法 1 – 使用 RIGHT 和 FIND 函数的工作表名称(旧方法)

方法 2 – 使用 TEXTAFTER 的工作表名称(最简单的方法)

方法 3 – 使用 TEXTSPLIT 的工作表名称(替代方法)

可能的用例

您可能会发现自己需要提取您正在处理的特定工作表的名称,这有几个主要用例。

第一个也是最基本的用例是用于标题目的。通常,您需要在工作表本身上显示一个名为“1 年第一季度预测”或“销售仪表板”的工作表,让其他人知道工作表中包含哪些内容。使用此公式可以加快工作流程,并减少制作工作表的许多不同副本和版本所需的时间。

同样,假设您有一个包含 30 名销售员工薪酬数据的工作簿,模板工作表根据员工 ID 运行查找和不同的 SUMIF。使用此方法,您只需将工作表名称保留为员工 ID 并引用工作表名称,只需保留工作表名称作为员工 ID 并引用工作表名称,只需为每个新副本更新工作表名称,则无需创建 30 个副本并重命名工作表名称。

您可能还希望在公式中引用工作表名称。使用以下方法作为基础来提取正确的工作表名称将避免在工作表名称中进行硬编码并减少出错的可能性。

方法

1. 使用 RIGHT 和 FIND 函数的工作表名称(旧方法)

1. 使用 RIGHT 和 FIND 函数的工作表名称(旧方法)
= RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

这个公式有几个不同的部分需要分解。最重要的是“CELL(”文件名“)”。此函数将始终返回在其中找到工作表的完整文件路径。从硬盘驱动器到文件夹,方括号中的工作簿名称,最后是工作表名称。

使用 = CELL(“文件名”)函数提取工作表名称

为了提取工作表名称,我们需要使用 RIGHT 公式将其从这个长字符串中提取出来。但是,由于工作表名称的长度可能不同,因此我们需要一种方法来确定工作表名称组成了多少个字符。

为此,我们使用 FIND 函数,它告诉我们 “]” 字符在完整路径中出现的位置。由于我们希望所有内容都位于该字符的右侧,因此我们可以使用 LEN 取整个文件名的长度,并减去 “]” 字符左侧存在的字符数,从而留下工作表名称中的字符数。

从那里,我们只需使用 RIGHT 函数从完整文件路径中提取特定数量的字符。

分解如何使用Excel公式提取工作表名称

综合在一起,我们看到在总共 76 个字符中,其中 59 个字符位于“]”字符之前,减去这两个数字后,您剩下 17 个字符,即文件名的长度。

如果您运行的是新版本的 Excel,则可以使用 LET 函数清理此问题。如果没有,您可能需要使用上述功能。

= LET( 文件名, CELL(“文件名”), RIGHT(文件名, LEN(文件名) - FIND( “]”, 文件名)))
= LET(
filename, CELL("filename"),
RIGHT(filename, LEN(filename) - FIND( "]", filename)))

使用 LET 允许我们将 “CELL(”文件名“)” 分配给变量文件名,并在公式中引用它,而不是重复调用 “CELL(”文件名)”。

这会直观地清理公式,并使其更容易跟踪正在发生的事情。

2. 使用TEXTAFTER函数的工作表名称(最简单的方法)

使用 TEXTAFTER 函数的工作表名称(最简单的方法)= TEXTAFTER(CELL(“文件名”),“]”)
= TEXTAFTER(CELL("filename"),"]")

TEXTAFTER函数对excel来说是相当新的,但允许我们提取工作表名称的最简单方法。TEXTAFTER 函数将在指定的分隔符之后返回单元格中的任何文本。

由于每次我们引用 =CELL(“文件名”)时,工作簿名称都会括在方括号中,后跟工作表名称,因此我们希望所有文本都位于“]”字符之后。

这个公式只是取文件名中“]”字符后面的所有文本,给我们留下工作表名称。

3.使用文本拆分功能的工作表名称(替代方法)

使用 TEXTSPLIT 函数的工作表名称(替代方法)= INDEX(TEXTSPLIT(CELL(“文件名”),“]”),,2)
= INDEX(TEXTSPLIT(CELL("filename"),"]"),,2)

因为 TEXSPLIT 实际上将输入拆分为单独的列,如果我们只使用 TEXSPLIT 而不使用 INDEX,你会在一个数组中得到两个动态溢出的单元格。第一个单元格包含“]”分隔符之前的所有内容,第二个单元格包含“]”分隔符之后的所有内容。

TEXTSPLIT 函数,不使用 INDEX 函数指定所需的返回

通过将 INDEX 添加到此函数中,我们可以告诉 Excel,在这两个单元格中,我们只希望返回数组中的第二个单元格。只给我们留下工作表名称。




如何使用VBA更新新的和复制的工作簿上的数据透视表数据源

问题所在

不久前,我尝试编写一个宏,该宏获取一个包含大量销售人员销售数据的主销售文件,并为每个销售人员创建主文件的单独副本,并修剪掉其他人的销售数据。

我已经让一切正常工作,除了数据透视表数据源不会更新。在从原始工作簿创建的任何副本上,透视数据源保持链接到原始主数据,而不是更新到新工作簿。这破坏了每个数据透视表和数据透视图,基本上使副本毫无价值。

在最终找到有效的解决方案之前,我尝试了几乎所有方法。

数据透视缓存与数据透视表

作为数据透视缓存和数据透视表之间区别的快速概述,数据透视缓存保存数据表的副本,当数据透视表连接到缓存时,对数据透视表所做的任何更改实际上都会对缓存进行,从而保留原始数据。

从透视到缓存的此链接是复制工作簿时中断的内容。数据透视表正在更新,但表连接到的缓存仍链接到原始工作簿。

这就是正在发生的事情;正如您在数据源下看到的,它连接到的表位于外部的“SalesWorkbook”工作簿中,而不是新工作簿中:

这是它应该的样子,使用其自己的工作簿中的 SalesDataTable,而不是主控形状的销售表:

修复

最终奏效的是重命名每个单独的数据透视缓存。此子循环遍历工作簿中的每个数据透视表,拉入完整的数据源名称(在本例中为“SalesWorkbook”!SalesDataTable),然后将位于“!”字符右侧的任何内容放入数组中,然后用于重命名所有数据透视缓存的源数据。

这基本上重命名了“销售工作簿”中的每个透视源!SalesDataTable ,成这个:SalesDataTable 。确保从活动工作簿中的数据正确更新缓存和表。

以下是完整的代码片段:

Sub updatePivotTables (wb As Workbook)

    Dim pt As PivotTable, ws As Worksheet, array
    For Each ws In wb.Sheets
        For Each pt In ws.PivotTables
            array = Split(pt.PivotCache.SourceData, "!")
            If UBound(array) = 1 Then
               pt.ChangePivotCache wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=array(1))
            End If
         Next
     Next
     
End Sub

通过在生成个性化报表的循环中调用此 sub,数据透视表都链接到新工作簿中的正确表和缓存。

问题解决了!




如何使用粘贴执行数学运算

介绍

您是否发现自己创建了不必要的帮助程序列以将整个列乘以一个数字,复制帮助程序列,然后删除帮助程序列?这是一连串痛苦的步骤,以及我过去的工作方式,直到我学会了如何用粘贴来加、减、乘和除任何大小范围。

概述

虽然我们都知道标准的复制和粘贴,但在粘贴中存在“粘贴特殊”。通常,这用于粘贴格式或粘贴值,但您也可以乘以较大的范围。使用“操作”粘贴,您可以简单地选择要添加/减去/乘法/除以的任何单元格值,然后粘贴到要更改的数据上。

示例 – 将范围乘以乘数

在此示例中,我将向您展示如何将范围乘以百分比。在这种情况下,我们将一些员工的工资乘以 105%,以计算出 5% 的工资增长。

步骤 1

第一步是复制您希望用来执行操作的值,在本例中,我们将复制 105%,我们将乘以 C 列中的工资范围。

步骤 2

接下来,您要突出显示要将复制的值“粘贴”到的范围。

步骤 3

最后,打开“选择性粘贴”菜单。这可以通过转到功能区>剪贴板中的“主页”选项卡>粘贴箭头>选择性粘贴来完成,或者使用快捷方式:alt + E + S 。您将看到弹出此菜单:

从这里,只需单击“操作”下的“乘法”检查,然后在粘贴下选择“值”,因为我们只想使用 105% 值,而不是带 % 符号。

你有它!整个范围都用一种粘贴改变了。

结语

您可以在各种数据集和应用程序中重复上述几个步骤。我无法告诉您有多少次我会在要转换的数据旁边创建一个列来执行这样的简单计算。使用这种粘贴特殊技术,我能够节省大量时间。

将这些数学运算与标准粘贴特殊选项结合使用非常强大,可以为您节省大量击键和麻烦。




如何返回单元格中每个字符的 ASCII 数字

如何在Excel中返回单元格中每个字符的ASCII数字

下面的公式将接受任何文本输入,并返回构成该字符串的每个字符的 ASCII 值。

内容:

1. 公式

2. 解释

公式

对于单个单元格中列出的每个 ASCII 数字(如上图所示),您可以使用以下公式:

=TEXTJOIN(" ",,CODE(MID(string, SEQUENCE(LEN(string)), 1)))

对于垂直溢出的动态数组,请使用以下公式:

=CODE(MID(string, SEQUENCE(LEN(string)), 1))

对于水平溢出的动态数组,请使用以下内容:

=CODE(MID(string, SEQUENCE(1, LEN(string)), 1))

解释

这些函数都可以从使用的五个函数中分解为五个主要部分:LEN、SEQUENCE、MID、CODE 和 TEXTJOIN。

我们将使用将所有字符组合到单个单元格中的公式和字符串“Sample”。

将单元格转换为 ASCII 的公式

公式的第一部分是 LEN 函数,它返回给定单元格中的字符数。在本例中,数字为 6。

创建数字序列以匹配单元格的长度

然后将此长度数字馈送到 SEQUENCE 函数,该函数生成一个动态数组。其大小与单元格中的字符数匹配。

按单个字符拆分单元格

下一步是使用 MID 函数。此函数与 SEQUENCE 函数中的数组相结合,将单元格分隔为单个字符。

从那里开始,剩下要做的就是使用 CODE 函数将分隔的字符转换为 ASCII,并使用 TEXTJOIN 函数将它们连接成单个单元格。

在此公式中,使用的分隔符是空格“ ”,但也可以使用逗号(或任何其他符号)。

从 excel 中的文本返回 ASCII 数字的公式



如何使用公式返回 Excel 工作簿的文件路径

如何在Excel中返回文件的文件路径

有时您会发现自己需要将文件的路径拉入 Excel 工作表中。幸运的是,我们可以使用一个快速公式来提取任何工作簿的文件路径。

内容:

1. Formula

2. 解释

公式

= LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-2)

解释

如何使用公式提取Excel文件的文件路径

虽然没有内置公式来返回 Excel 工作簿的文件路径,但如果需要,我们可以将 CELL 函数与其他一些函数结合使用来返回完整的文件路径、名称甚至工作表名称。

我们公式的基础是 CELL:

= CELL("filename",A1)
在Excel中返回带有工作簿名称和工作表名称的文件路径的公式

通过将 CELL 函数与第一个参数位置的“文件名”info_type一起使用,此函数将返回完整的文件路径、括号中的工作簿名称以及放置公式的工作表。

此公式将根据引用单元格(在本例中为 A1)返回使用该公式的文件的完整文件路径和工作表名称。

要记住的一件事是,如果您使用“文件名”info_type,则 CELL 函数只会在保存工作簿时更新。如果工作簿尚未保存,CELL 将返回一个空字符串。

如果您不需要工作表名称或工作簿名称,并且想要隔离文件路径,则需要使用其他函数将它们分开。

这是一个可以帮助您仅提取文件路径的公式:

= LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-2)
用于在Excel中返回工作簿的文件路径的公式

此公式查找“[”字符的位置(在完整文件路径中工作簿名称之前),然后返回此位置左侧的所有文本,即文件路径。




如何在Excel中突出显示包含公式的单元格

如何使用条件格式突出显示包含公式的单元格

若要突出显示 Excel 工作簿中包含公式的任何单元格,可以使用一个简单的条件格式公式。

内容:

1. 条件格式公式

2. 解释

条件格式公式

此公式适用于任何选定范围,无需编辑。

= ISFORMULA(INDIRECT(ADDRESS(ROW(), COLUMN())))

没有间接的替代公式:

您必须将此公式中的A1替换为所选范围内最左上角的单元格。此公式在大型工作簿中比上述公式更有效。

= ISFORMULA(A1)

解释

如果单元格包含公式,如何有条件地设置单元格的格式

无论您是想调试工作簿还是更好地了解财务模型的工作原理,突出显示包含公式的所有单元格都可以让您轻松查看哪些单元格是静态的,哪些单元格包含公式。

让我们从一个简单的表格开始,概述我们公司的月销售额:

如何突出显示带有公式的单元格

你不能只看它,但其中两列实际上是公式,而不是静态或硬编码的数字。

总销售额是将数量和价格相乘的公式。

条件格式,突出显示范围内的所有单元格

“计划实现”列将我们的总销售额除以我们的业务计划,或我们预期的销售额。

用于突出显示包含公式的单元格的条件格式

如果我们想突出显示这两列以明确这两列中存在公式,则可以使用条件格式突出显示存在公式的每个单元格。

我们需要做的就是选择要突出显示的范围:

包含公式和硬编码值的示例数据表
如何将自定义公式添加到条件格式

然后在条件格式(在“主页”选项卡中找到)下,单击“新建规则”。

然后,在“新格式规则”菜单中,我们将选择“使用公式确定要格式化的单元格”并放入公式中。

= ISFORMULA(INDIRECT(ADDRESS(ROW(), COLUMN())))

备注:此公式使用间接,在评估大量单元格时会很慢,您可能需要将上面列出的替代公式用于较大的工作簿

放入公式后,我们可以单击 格式 菜单底部附近的按钮:

自定义公式以突出显示包含公式的所有单元格

这将允许我们在发现我们输入的公式为 TRUE 的任何地方设置特定的格式规则。在这种情况下,我们将用黄色填充单元格的背景,以突出显示包含公式的任何单元格。

用于填充单元格背景的条件格式单元格

单击确定,我们完成了!现在,包含所选范围内公式的每个单元格都将以黄色突出显示。

包含 Excel 中突出显示的公式的所有单元格的已完成示例



如何在Excel中计算彩色单元格的数量

如何使用公式计算Excel中的彩色单元格

虽然不是内置的Excel功能,但我们可以创建自己的函数来轻松计算彩色单元格。

内容:

1. 如何使用 VBA 用户定义函数

2. 如何计算所有彩色单元格

3. 如何计算匹配单元格颜色的单元格

如何使用用户定义的函数

下面的两个示例将使用“用户定义函数”。就像 SUM 和 COUNT 被视为函数一样,我们可以使用 VBA 创建自己的函数。

这与使用宏的过程相同,但我们可以调用我们的函数,而不是运行宏,类似于在公式中调用内置函数的方式(通过键入“=”后跟函数名称)。

使用用户定义函数的第一步是获取VBA代码片段,并将其放入工作簿中。为此,请按 alt + F11 或转到 Visual Basic >开发人员选项卡打开 VBA 编辑器:

如何在 Excel 中打开 Visual Basic 菜单

接下来,我们需要创建一个模块来放置自定义函数。在左侧菜单中,右键单击您的工作簿名称,然后选择插入>模块。在此模块中输入的任何代码都可以在工作簿中的任何位置使用。

如何在 Excel 中插入模块

然后,您所要做的就是将函数代码拖放到该菜单右侧的空白区域中,您将能够在工作簿中的任何单元格中按其名称调用自定义函数。

在 Excel 中使用用户定义的函数

如何计算范围内所有彩色单元格

要计算范围内所有彩色单元格,或给定范围内没有空白背景的任何单元格,我们可以使用用户定义的函数,我们称之为“CountColoredCells”。

此函数将在给定范围内搜索任何彩色单元格并对其进行计数。

Function CountColoredCells(eval_range As Range) As Long
    Dim cell As Range
    Dim colored_count As Long

    colored_count = 0

    For Each cell In eval_range
        If cell.Interior.ColorIndex <> xlNone Then
            colored_count = colored_count + 1
        End If
    Next cell

    CountColoredCells = colored_count
    
End Function

例如,这里有一个工作簿,其中有几种不同的颜色表示不同的结果。如果我们想知道这个范围内有多少个单元格是着色的,我们可以使用公式(在我们将函数放入模块之后):

= CountColoredCells(cell_range)
= CountColoredCells(C4:C10)
如何在Excel中计算范围内的所有彩色单元格

通过使用“CountColoredCells”函数并选择要计数的范围,我们可以使用自定义函数返回正确数量的彩色单元格。

用于计算所有彩色单元格的Excel公式

如何计算与特定颜色匹配的区域中的单元格

与其计算一个范围内所有彩色单元格,不如对区域中与特定颜色匹配的单元格进行计数呢?

例如,我们可以使用上面相同的示例,但添加绿色的“Good”。仅使用颜色,我们可以计算出与每种状态匹配的单元格数量。

Function CountColorMatches(eval_range As Range, cell_reference As Range) As Long
    Dim cell As Range
    Dim reference_color As Long
    Dim match_count As Long

    reference_color = cell_reference.Interior.Color
    match_count = 0

    For Each cell In eval_range
        If cell.Interior.Color = reference_color Then
            match_count = match_count + 1
        End If
    Next cell

    CountColorMatches = match_count
    
End Function

要使用此功能,我们将使用略有不同的结构,通过定义要查看的范围以及包含我们要计数的颜色的单元格。

= CountColorMatches(cell_range, reference_cell)
= CountColorMatches($C$4:$C$10,E4)
用于计算特定颜色的所有彩色单元格的Excel公式

在这里,我们的函数是查看 E4 的颜色,并计算单元格颜色在 C4:C10 范围内出现的次数。通过向下拖动相同的公式,我们可以查看每种颜色,绿色,黄色和红色。

如何在Excel中计算特定颜色的单元格

为了说明这是计算颜色而不是文本,我们可以删除文本,计数将保持不变。

使用颜色对 Excel 中的单元格进行计数



如何在Excel中启用“开发人员”选项卡

如何在Excel中启用“开发人员”选项卡

默认情况下,Excel 中的“开发工具”选项卡是隐藏的,但提供了一些非常重要的功能和每个 Excel 专家都应该使用的内置功能。

内容:

1.如何启用开发人员选项卡

2. 在“开发人员”选项卡中找到的功能

如何在Excel中启用“开发人员”选项卡

要启用开发人员选项卡,只需遵循几个简单的步骤:

在 Excel 中启用“开发人员”选项卡
在 Excel 中找不到“开发人员”选项卡

1.按 文件 工作簿顶部功能区左上角的按钮

2.然后按“选项”以调出Excel选项菜单

3.接下来,转到左侧菜单上的“自定义功能区”

4.最后,单击“自定义功能区”菜单中“开发人员”选项卡旁边的框。

Excel 中缺少“开发人员”选项卡

5.选中后,点击“确定”,开发人员选项卡将出现在顶部功能区栏上。

如何在Excel中取消隐藏“开发人员”选项卡

“开发人员”选项卡中包含哪些内容?为什么要启用它?

Microsoft Excel 中的“开发工具”选项卡是功能区上功能丰富的选项卡,它为用户提供了许多工具,主要用于帮助自动执行任务、编写和管理宏以及控制 Excel 的编程功能。默认情况下,此选项卡在 Excel 中不可见,但可以通过“Excel 选项”菜单轻松启用。

宏和VBA功能区选项卡

宏和 VBA:此部分允许您使用 VBA(Visual Basic for Applications)代码记录、管理和编辑宏。VBA 是一种编程语言,Microsoft Office 程序使用它来自动执行任务。您可以编写脚本来自动执行重复性任务,或执行难以或不可能手动执行的复杂计算和任务。

“开发工具”选项卡中的“加载项”部分

外接程序:Excel 支持各种外接程序,这些外接程序是额外的工具或功能,您可以下载并安装这些外接程序或功能,以便为 Excel 提供更多功能。“开发工具”选项卡允许您管理这些加载项。

“开发工具”选项卡中的窗体控件

窗体/ActiveX 控件:这些控件是可以添加到工作表中的交互式元素,如按钮、复选框或下拉列表。您可以使用 VBA 对这些控件进行编程,以便在与它们交互时(例如,单击按钮时)发生某些事情。

“开发工具”选项卡中的 XML 选项

XML:本节提供用于处理 XML 数据的工具,允许您导入和导出 XML 数据和架构、刷新 XML 数据以及其他任务。

“开发工具”选项卡将使您能够使用 VBA 自动执行重复性任务、向工作表添加交互式元素以及管理 Excel 加载项。其中一些功能需要编程知识,或者比典型的 Excel 功能更高级。但可以让您将工作簿提升到一个新的水平。




如何在Excel中将列表中的第n项返回到最后一项

如何使用Excel中的公式将列表中的第n项返回到最后一项

通常,您需要返回列表中的最后一项或第一项,但每隔一段时间,您可能会发现自己需要在列表中返回不同的“最后”结果。这些公式会有所帮助。

内容:

1. 公式

2. 示例

2.1. 如何将列中的第 n 项返回到最后一项

2.1. 如何将第 n 项返回到连续的最后一项

公式

对于这两个公式,每个公式中的“n”应替换为要返回的最后一项的第 n 个位置。例如,n 作为 1 将返回最后一项,2 返回倒数第二项,3 返回最后一项,依此类推。

范围”应替换为要评估的垂直或水平列表。例如,对于 A 列中的 100 项列表,可以使用“A1:A100”作为范围。

全列或全行引用也有效,“A:A”或“2:2”也将返回正确的值。

返回垂直列表(列)中最后的第 n 项:

= INDEX(range, MATCH(n + 1, 1/(range <> ""), 1) - n + 1)

将第 n 项返回到水平列表(行)中的最后一项:

= INDEX(range, MATCH(n, 1/(range <> ""), 1) - n + 1)

例子

如何将列中的第 n 个返回到最后一个非空白项目

如果我们有一个 C3:C12 范围内的项目列表,我们可以使用以下公式返回该列表中的第 n 个到最后一个项目。唯一需要更改的是您要评估的范围以及您想要返回的位置。

在此公式中,G5 确定返回哪个位置。在这个例子中,我们在 G2 中放置了 5 个,它告诉公式从我们的列表中取倒数第二个项目。

如果要返回此列表中的倒数第三个项目,则此处的 3 输入将返回正确的项目。

请务必注意,此公式将忽略所有空白,仅返回最后一个非空白项。

= INDEX(C3:C12, MATCH(G5 + 1, 1/(C3:C12 <> ""), 1) - G5 +1)
如何将列中的第 n 个返回到最后一个非空白项目

如何将第 n 个返回到行中的最后一个非空白项目

如果我们有一个水平列表,我们可以使用类似的公式。以下公式将返回行中第 n 项到最后一项。唯一需要更改的是您要评估的范围以及您想要返回的位置。

在此公式中,D3 确定返回哪个位置。在此示例中,我们在 D2 中放置了 3,它告诉公式从列表中获取倒数第二项。

如果要返回此列表中的倒数第三个项目,则此处的 3 输入将返回正确的项目。

= INDEX(C5:L5, MATCH(D3, 1/(C5:L5 <> ""), 1) - D3 + 1)
如何将第 n 个返回到行中的最后一个非空白项目



如何在Excel中返回列表中的倒数第二个项目

如何在Excel中返回列表中的倒数第二个项目

通常,您需要返回列表中的最后一项或第一项,但每隔一段时间,您可能会发现自己需要返回列表中的倒数第二项。这些公式会有所帮助。

内容:

1. 公式

2. 示例

2.1. 如何返回列中倒数第二项

2.1. 如何连续返回倒数第二项

公式

对于这两个公式,“范围”应替换为要计算的垂直或水平列表。例如,对于 A 列中的 100 项列表,可以使用“A1:A100”作为范围。

返回垂直列表中倒数第二项的公式:

= INDEX(range, ROWS(range) - 1)

返回水平列表中倒数第二项的公式:

= INDEX(range, 1, COLUMNS(range) - 1)

例子

如何返回列中第二个到最后一个非空白项

如果我们有一个 B3:B9 范围内的项目列表,我们可以使用以下公式返回该列表中的第二个到最后一个项目。唯一需要更改的是您要评估的范围。

请务必注意,此公式将忽略所有空白,仅返回最后一个非空白项。

= INDEX(B3:B9, ROWS(B3:B9) - 1)
公式以返回列中第二个到最后一个非空白项目

如何返回连续第二个到最后一个非空白项

如果我们有一个水平列表,我们可以使用类似的公式。以下公式将返回行中倒数第二项。唯一需要更改的是您要评估的范围。

请务必注意,此公式将忽略所有空白,仅返回最后一个非空白项。

= INDEX(C5:I5, 1, COLUMNS(C5:I5) - 1)
返回连续第二个到最后一个非空白项的公式



如何在Excel中将月份名称转换为数字

如何在Excel中将月份名称转换为数字

通常,您需要返回列表中的最后一项或第一项,但每隔一段时间,您可能会发现自己需要返回列表中的倒数第二项。这些公式会有所帮助。

内容:

1. 公式

2. 解释

3.例子

3.1. 如何将月份名称转换为月份编号

公式

对于此公式,范围应替换为要转换的月份名称范围

= MONTH(DATEVALUE(range & " 1"))
将月份名称转换为月份编号的公式

解释

这个公式可以分为两个主要部分。

首先,DATEVALUE 函数将文本日期转换为表示日期的数字。此函数需要日期字符串采用有效的日期格式,这就是将“ 1”附加到月份名称的原因,从而创建有效的日期字符串。

例如,如果您在单元格A1中有“一月”,则A1和“ 1”将为您提供“1月<>日”。

当它被馈送到 DATEVALUE 函数时,它会转换为表示日期的序列号。

因此,DATEVALUE(“1 月 1 日”)将为您提供当前年份中 1 月 1 日的序列号:2023/<>/<>(如果未指定,Excel 将假定为当前年份)。

其次,MONTH 函数然后从该日期序列号中提取月份编号。因此,如果将 1/1/2023 输入到 MONTH 函数中,将返回 1。2 年 1 月 2023 日将返回 2,依此类推。

例子

如何将月份名称转换为数字

在此示例中,我们在 B 列中有一个月份名称列表,需要将这些名称转换为相应的月份数字。

在 C 列中使用以下公式,我们可以轻松地将每个名称转换为一个数字。

此公式可以是单个单元格引用,或者如果您使用的是Excel 365,则还可以使用“B3:B14”作为范围选择整个范围。

= MONTH(DATEVALUE(B3 & " 1"))
如何使用公式将月份名称转换为数字



如何在Excel中突出显示周末

如何在Excel中突出显示周末

使用条件格式,我们可以使用自定义公式突出显示任何日期范围内的所有周末日期,让您直观地查看哪一天是周末。

内容:

1. 公式

2. 解释

2.1 如何输入自定义条件格式规则

2.2 这个公式是如何工作的?

公式

这是一个条件格式设置函数,应作为新的格式规则输入。此公式中的“A1”应替换为所选范围内的第一个单元格。

= WEEKDAY(A1, 2) > 5
用于突出显示所有周末日期的条件格式规则

解释

如何输入自定义条件格式规则

如何输入自定义条件格式规则

1.选择要应用条件格式的单元格范围。例如,如果日期位于 A 列中,请选择该列或该列中要突出显示的特定单元格。

2.单击功能区中的“主页”选项卡,然后单击“样式”组中的“条件格式”下拉列表。

3. 选择“新规则”。将出现一个对话框。

如何在 excel 中突出显示周末日期

4.在“新格式规则”对话框中,选择“使用公式确定要格式化的单元格”。

在 Excel 中突出显示周末

5.在“设置此公式为真的值的格式”框中,键入以下公式: = WEEKDAY(A1,2)>5。将“A1”替换为对所选区域中第一个单元格的引用。此公式使用 WEEKDAY 函数来测试日期是星期六还是星期日。

6. 点击“格式化”按钮。选择要在条件为 true 时应用的格式,例如用于突出显示单元格的特定填充颜色。

创建自定义格式规则以突出显示周末

7.单击“确定”关闭“单元格格式”对话框。

8. 单击“确定”关闭“新建格式规则”对话框。

现在,所选范围内的所有周末日期都将以您选择的格式突出显示。这是动态的,因此如果您更改单元格中的日期,格式将根据新日期是否为周末进行更新。

这个公式是如何工作的?

此公式基于 WEEKDAY 函数。WEEKDAY 函数返回一个介于 1 和 7 之间的数字,表示星期几。一周的第一天由函数中的第二个参数确定。

下面是第二个参数更改输出的方式:

  1. 数字 1-7 代表周日至周六。
  2. 数字 2-8 代表周一至周日。

在公式 =WEEKDAY(A1,2)>5 中,我们使用 2 作为第二个参数,这意味着星期一用 1 表示,星期日用 7 表示。所以,星期六变成6,星期天变成7。

公式的 >5 部分创建一个条件,其中只有大于 5 的数字才被视为 TRUE。因此,只有星期六 (6) 和星期日 (7) 将返回 TRUE。

因此,在条件格式规则的上下文中,此公式会将格式应用于公式计算结果为 TRUE 的任何单元格,即包含星期六和星期日日期的任何单元格。




如何在Excel中按颜色对单元格求和

如何在Excel中按颜色对单元格求和

虽然不是内置的 Excel 功能,但我们可以创建自己的函数来按颜色轻松对单元格求和。

内容:

1. 如何使用 VBA 用户定义函数

2. 如何对所有彩色单元格求和

3. 如何按特定单元格颜色对单元格求和

如何使用用户定义的函数

下面的两个示例将使用“用户定义函数”。就像 SUM 和 COUNT 被视为函数一样,我们可以使用 VBA 创建自己的函数。

这与使用宏的过程相同,但我们可以调用我们的函数,而不是运行宏,类似于在公式中调用内置函数的方式(通过键入“=”后跟函数名称)。

使用用户定义函数的第一步是获取VBA代码片段,并将其放入工作簿中。为此,请按 alt + F11 或转到 Visual Basic >开发人员选项卡打开 VBA 编辑器:

如何在 Excel 中打开 Visual Basic 菜单

接下来,我们需要创建一个模块来放置自定义函数。在左侧菜单中,右键单击您的工作簿名称,然后选择插入>模块。在此模块中输入的任何代码都可以在工作簿中的任何位置使用。

如何在 Excel 中插入模块

然后,您所要做的就是将函数代码拖放到该菜单右侧的空白区域中,您将能够在工作簿中的任何单元格中按其名称调用自定义函数。

在 Excel 中调用客户用户定义的函数

如何对范围内的所有彩色单元格求和

要对范围内的所有彩色单元格或给定范围内没有空白背景的任何单元格求和,我们可以使用用户定义的函数,我们称之为“SumAllColoredCells”。

此函数将在给定范围内搜索任何彩色单元格并将它们求和。

Function SumAllColoredCells(eval_range As Range) As Double
    Dim cell As Range
    Dim total_sum As Double

    totalSum = 0

    For Each cell In eval_range
        If cell.Interior.ColorIndex <> xlNone Then
            If IsNumeric(cell.Value) Then
                total_sum = total_sum + cell.Value
            End If
        End If
    Next cell

    SumAllColoredCells = total_sum
End Function

例如,这里有一个工作簿,其中有几种不同的颜色表示不同的结果。如果我们想知道这个范围内有多少单元格是着色的,我们可以使用此公式(在我们将函数放入模块之后):

= SumAllColoredCells(cell_range)
= SumAllColoredCells(B3:B12)
如何使用Excel中的公式对范围内的所有彩色单元格求和

通过使用“SumAllColoredCells”函数并选择要求和的范围,我们可以使用自定义函数返回所有彩色单元格的总和(忽略空白单元格)。

对区域内的所有彩色单元格求和

如何对与特定颜色匹配的区域中的单元格求和

与其对区域中所有彩色单元格求和,不如对区域中与特定颜色匹配的单元格求和呢?

例如,我们可以使用上面的相同示例,但创建一个 SUMIF,其中我们的公式将汇总具有与参考单元格颜色匹配的背景颜色的单元格。

Function SumByColor(eval_range As Range, cell_reference As Range) As Double
    Dim cell As Range
    Dim reference_color As Long
    Dim total_sum As Long

    reference_color = cell_reference.Interior.Color
    total_sum = 0

    For Each cell In eval_range
        If cell.Interior.Color = reference_color Then
            If IsNumeric(cell.Value) Then
                total_sum = total_sum + cell.Value
            End If
        End If
    Next cell

    SumByColor = total_sum
End Function

要使用此功能,我们将使用略有不同的结构,通过定义要评估的范围以及包含我们要求和的颜色的单元格。

= SumByColor(cell_range, reference_cell)
= SumByColor(B3:B12,D3)
如何对与特定颜色匹配的区域中的单元格求和

在这里,我们的函数是查看 D3 的颜色,并对 B3:B12 范围内与该颜色匹配的单元格求和。通过复制这个公式,我们可以查看每种颜色的总和,绿色、黄色和红色。

对区域中与特定颜色匹配的所有单元格求和



如何在Excel中计算加权平均值

计算加权平均公式 Excel

加权平均值是每个值具有不同重要性级别的平均值,由权重表示,这会影响整体计算。

内容:

1. 公式

2. 示例 – 计算加权平均成绩

加权平均公式

Excel 中的加权平均公式如下:

= SUMPRODUCT(score_range, weight_range)

因此,如果您的分数保持在 A1:A5 范围内,那将是您的score_range,如果权重在范围 B1:B5 中紧挨着它们,那将是您的weight_range

*请注意,权重百分比的总和必须为 1(或 100%)才能获得准确的结果

如何计算加权平均成绩

假设您有一个学生的成绩,每个成绩都有不同的重要性或权重。

如何计算加权平均成绩

加权平均值将根据学生在每个类别中的表现而变化。与测验相比,加权较高的测试将占其总成绩的更大比例。

每个类别的权重和分数都需要计算加权平均值,所以让我们把它放在权重旁边。

如何计算加权平均值

接下来要计算加权平均值,我们可以使用以下公式。

= SUMPRODUCT(C3:C10,D3:D10)
Excel 中的加权平均值

这给了我们86%的加权平均值。

计算加权平均成绩



如何在Excel中计算流速

如何在Excel中计算流速

流速可能很难计算,但如果您拥有所有必需的部分,我们可以创建一些简单的 Excel 公式来为您完成工作。

内容:

1. 什么是流量

1.1 何时使用每个公式

2. 计算理想流体的流量

3. 用压力计算流量

什么是流量

流速,通常表示为“Q”,是许多工程领域的基本指标。它有助于量化在特定条件下每单位时间内通过的流体量。计算流速的两个最基本的公式是

Q = A * v 

(用于明渠和管道)和

Q = (πΔpr4) / (8μL)

(用于压力下管道中的流体流动)。

何时应使用每个流速公式?

Q = A * v该公式主要用于流体动力学,以确定明渠(如河流或溪流)和管道中的流速,其中流体自由流动且没有任何显着压力。此公式要求您知道流体的横截面积 (A) 和速度 (v)。它基于质量守恒的基本原理,并假设均匀、稳定的流动。

Q = (πΔpr4) / (8μL)该公式源自哈根-泊塞耶方程,该方程描述了粘性流体通过管道的流动。当流体处于压力下时,例如在封闭管道系统中,它被使用。该公式需要了解流体粘度 (μ)、管道长度 (L)、压力变化 (Δp) 和管道半径 (r)。该公式最适用于层流条件、长而窄的管道和不可压缩的牛顿流体。

如何计算理想流体的流速

在 excel 中计算理想流体的流速

Q = A * v 是计算流速的最简单方法之一,其中“A”是流动的横截面积,“v”是流动的速度。我们假设流动是均匀的,这意味着速度在整个横截面上是恒定的。

首先输入您的数据。在一列中,列出所有横截面积,在另一列中,列出所有速度。

Excel中的流量公式

如果您知道管道的面积,则不需要管道的直径或半径。但如果没有,则需要使用圆的面积公式 (A = πr²) 计算横截面积。

所以我们取我们的直径,并输入这个公式来转换为面积。B3是你的直径。

= PI()*(B3/2)^2
= PI()*(diameter/2)^2
如何计算流速 Q= A*v

接下来,为每个横截面输入相应的速度值。

最后,编写公式以计算流速 (Q = A * v) 为 = D3/144 * C3。我们在这里将速度除以 144,以从面积计算中使用的平方英寸转换为速度所在的平方英尺。

= D3/144*C3
= velocity * area
Excel流速单位换算

请务必仔细检查您的度量单位,以确保它们在所有数据和计算中保持一致。例如,如果您的面积以平方米 (m²) 为单位,速度以米/秒 (m/s) 为单位,则您的流速将以立方米每秒 (m³/s) 为单位。

如何使用压力变化计算流量

如何使用压力变化计算流量

如果需要计算流体在压力下的流速,则需要第二个公式。您需要使用的公式称为哈根-泊苏耶方程:

Q = (πΔpr4/8μL)

让我们从分解公式中的每个术语开始。

Q – 流速,即单位时间内流过给定点的流体体积

π – 数学常数 pi,大约等于 3.14159

Δp – 管道长度上的压力变化

r – 管道半径

μ – 流体的动态粘度。它是流体抗剪切或流动阻力的量度

L – 流体流经的管道长度

一旦您将公式的所有部分都放在表格中,如下所示:

在excel中使用压力公式计算流量

我们可以使用以下公式计算流速:

= (PI() * pressure_change * (radius^4))/(8 * viscosity * length)
= (PI()*D10*(E10^4))/(8*B10*C10)
Excel 中的哈根-泊苏耶方程
流速的哈根-泊苏耶公式



如何在Excel中将价格舍入为.99

如何在Excel中将价格舍入为.99

在处理价格时,四舍五入到最接近的 .99 美分通常是有益的。根据我们正在寻找的结果,我们可以使用一些公式。

内容:

1. 公式

2. 示例

2.1. 将价格四舍五入到最接近的 .99 美分

2.2. 四舍五入价格高达 .99 美分

2.3. 将价格舍入到 .99 美分

公式

假设您在单元格 A1 中的价格:

将价格四舍五入到最接近的 .99

= ROUND(A1,0) - 0.01

四舍五入价格至最接近的 .99

= CEILING.MATH(A1,1) - 0.01

价格四舍五入到最接近的 .99

= FLOOR.MATH(A1,1) - 0.01

如何将价格四舍五入以最接近的 .99 结尾

如何将价格四舍五入以最接近的 .99 结尾

如果我们有一个价格列表,并希望将它们向上或向下舍入到最接近的 .99 美分,我们可以使用以下公式:

= ROUND(price,0) - 0.01

ROUND 函数将我们的价格四舍五入到最接近的整数(5.30 美元到 5.00 美元),然后我们从该数字中减去 0.01 以达到最接近的 .99 美分。

如何将价格四舍五入到以 .99 结尾

如何将价格四舍五入到以 .99 结尾

相反,如果我们有一个价格列表并想将它们舍五入到最接近的 .99 美分,我们可以使用以下公式:

= CEILING.MATH(price,1) - 0.01

天花板。MATH 函数将我们的价格四舍五入到最接近的整数(5.30 美元到 6.00 美元),然后我们从该数字中减去 0.01 以达到最接近的 .99 美分。

如何将价格向下舍入到以 .99 结尾

如何将价格向下舍入到以 .99 结尾

否则,如果我们有一个价格列表并想将它们舍五入到最接近的 .99 美分,我们可以使用以下公式:

= FLOOR.MATH(price,1) - 0.01

地板。MATH 函数将我们的价格四舍五入到最接近的整数(5.30 美元到 5.00 美元),十我们从该数字中减去 0.01 以达到最接近的 .99 美分。




专业造价工具类网站calc.xycost.com更新了,其他网站收费的在这一律免费使用。

有一段时间没有更新了,跟大家汇报下网站更新的事,纯当流水账了,本网站源码可免费提供给造价或编程爱好者。

工程建设其他费用(独立费)自动在线计算系统更新为BIM百宝箱,新增大量工程量计算工具及通用工具,还有Widnows桌面版计算程序可以独立下载,欢迎免费使用。目前已集全30个省份(除西藏没找到文件外)的造价咨询费用在线计算(包含部分旧版文件)。

本系统地址:https://calc.xycost.com(为永久保存,请加入浏览器收藏夹,手机及电脑端均可使用。也可直接点下面的阅读原文打开进行计算)。

一、将工程量计算部分跟二类费计算分开。

二、新增四川造价咨询收费参考标准(川建价师协[2022]56号)内蒙古招标代理服务收费(内工建协[2022]34号)内蒙古工程造价咨询服务收费(内工建协[2022]35号)内蒙古监理费计费指导意见(内工建协[2022]36号)等计算器。

三、新增河南省工程造价咨询行业服务收费(豫价协[2022]6号)江苏省工程造价咨询服务收费(苏建价协[2022]7号)北京造价咨询服务费计价参考(京标价协[2022]71号)等计算器。

四、通用工具新增Chatgpt在线使用、WORD与MD文件互相转换,PDF与OFFICE文件(此功能目前大多数网站收费,在此免费)相互转换功能、特殊符号大全、日期差计算、任意图片调整尺寸及格式转换、任意信息生成二维码、型钢计算器(功能超出GLD型钢五金大全,但是免费哟)等。

一、进入左下角”阅读原文“,或直接进入calc.xycost.com网站

桌面版的计算器下载见下图:

如果有新的收费标准或发现上述计算有误,请联系VX:xycost或QQ 435809415,一般在三个工作日内会修正或提交您的收费标准。




如何使用OPENAI API来通过程序生成回复,使用C#语言。

通过openai的API程序化生成回复,使用C#语言。即输入一段文字,通过程序得到chatgpt的回复。代码如下,生成的速度有点慢,运行时还是得使用梯子:

    private async void button11_Click(object sender, EventArgs e)
    { string apiKey = "sk-xxxxxxxxx"; // 请替换为您的OpenAI API Key
        string originalString = textBox7.Text; // 替换为你的原始字符串
        string first2000Chars = originalString.Length > 2000
            ? originalString.Substring(0, 2000)
            : originalString;
        string organizedText = await OrganizeTextWithChatGPT(apiKey, first2000Chars);
            textBox7.Text= organizedText;

    }
    static async Task<string> OrganizeTextWithChatGPT(string apiKey, string textToOrganize)
    {        // 构造请求的JSON数据
        string apiUrl = "https://api.openai.com/v1/engines/text-davinci-003/completions";
        string prompt = "请校正并排版以下文字:\n" + textToOrganize + "\n整理结果:";
        string model = "text-davinci-003";
        int maxTokens = 2000;
        string data = JsonConvert.SerializeObject(new { prompt = prompt, max_tokens = maxTokens });
        // 发送HTTP请求到OpenAI API
        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

            StringContent content = new StringContent(data, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync(apiUrl, content);
            string responseContent = await esponse.Content.ReadAsStringAsync();

            // 解析JSON字符串
            JObject jsonObject = JObject.Parse(responseContent);

            // 获取text字段的值
            string textValue = (string)jsonObject["choices"][0]["text"];
            return textValue;
        }
    }



LUT批量预览神器




某文库下载器,亲测好用




万彩办公大师




国际版剪映,解锁vip功能,附120套模板




windows系统永久激活工具




Luminar4绿色版




发WordPress文章的方法,实现采集数据自动发到网站。使用邮件或RESTAPI

由于用chatgpt采集了一堆数据,想要发到网站上。下面提出两种方法,各有优缺点,请各取所需。

发邮件的方式

一、首先需要安装插件Jetpack,这个插件有个功能就是通过发邮件到某个邮箱实现发贴功能。生成一个独一无二的邮箱,发邮件即为发文章。

二、发采集数据到wordpress也就转换成了发文章到邮箱的问题了,这个使用chatgpt直接辅助编程即可,基本上30分钟内可以搞定。使用chatgpt可以选择python、PHP等任意语言,我自己对C#比较熟悉,就选这个了。通过这种方法也可附加PDF或图像,也可以设定文章分类、状态、发贴人等信息,具体详见https://jetpack.com/support/post-by-email/?site=xycost.com。需要者可联系站长提供源码。

    private void button2_Click(object sender, EventArgs e)
    {
        string csvFilePath = "search_results.csv";
        string recipientEmail = "xycostremu@post.wordpress.com";//上面jetpack生成的邮箱
        string senderEmail = "xycost1221@163.com";
        string senderPassword = "ULPYZQRJGEZOCYFX";//注意是授权码不是邮箱密码
        try
        {
            using (StreamReader reader = new StreamReader(csvFilePath))
            {
                string line;
                reader.ReadLine();
                while ((line = reader.ReadLine()) != null)
                {
                    string[] data = line.Split(',');

                    // 提取CSV行中的数据
                    string title = data[0];
                    string link = data[1];
                    string description = data[2];
                    string content = data[2];

                    // 发送邮件
                    SendEmail(senderEmail, senderPassword, recipientEmail, title, link, description, content);
                }
            }

            Console.WriteLine("邮件发送完成!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发送邮件时发生错误:{ex.Message}");
        }
    }
    static void SendEmail(string senderEmail, string senderPassword, string recipientEmail, string title, string link, string description, string content)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient client = new SmtpClient("smtp.163.com", 25); // 163邮箱的SMTP服务器地址和端口号,也可使用QQ邮箱

            mail.From = new MailAddress(senderEmail);
            mail.To.Add(recipientEmail);
            mail.Subject = title;
            mail.Body = $"Content: {content}";//Link: {link}\nDescription: {description}\n,可按自己要求的格式订制。
            mail.BodyEncoding = Encoding.UTF8;
            //设置为HTML格式
            mail.IsBodyHtml = true;
            //优先级
            mail.Priority = MailPriority.Low;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;

            client.EnableSsl = true;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential(senderEmail, senderPassword);

            client.Send(mail);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发送邮件时发生错误:{ex.Message}");
        }
    }

使用网站原生REST API

如果要使用RESTAPI发表文章,经过试验后以下方法可用。

        string apiUrl = "https://xycost.com";

        // Your WordPress username and password
        string username = "你的用户名";
        string password = "你的密码";

        WordPressApiClient wpApiClient = new WordPressApiClient(apiUrl, username, password);
         await wpApiClient.CreatePost(title, content);
  public class WordPressApiClient
    {
        private string baseUrl;
        private string username;
        private string password;

        public WordPressApiClient(string baseUrl, string username, string password)
        {
            this.baseUrl = baseUrl;
            this.username = username;
            this.password = password;
        }

        public async Task<string> CreatePost(string title, string content)
        {
            // 构造表单数据
            var formData = new Dictionary<string, string>
        {
            { "title", title },
            { "content", content }
            // 可添加其他表单数据字段...
        };

            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    // 设置基本认证头部
                    var byteArray = Encoding.ASCII.GetBytes($"{username}:{password}");
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

                    // 发送 POST 请求,并将表单数据作为请求体发送
                    HttpResponseMessage response = await httpClient.PostAsync($"{baseUrl}/wp-json/wp/v2/posts", new FormUrlEncodedContent(formData));

                    // 处理响应结果
                    if (response.IsSuccessStatusCode)
                    {
                        string responseContent = await response.Content.ReadAsStringAsync();
                        // 解析响应的 JSON 数据,获取文章的 ID 或其他信息
                        dynamic responseData = JsonConvert.DeserializeObject(responseContent);
                        string postId = responseData.id;
                        return postId;
                    }
                    else
                    {
                        // 处理请求错误
                        string errorMessage = await response.Content.ReadAsStringAsync();
                        return $"发生错误:{errorMessage}";
                    }
                }
                catch (Exception ex)
                {
                    // 处理异常
                    return $"发生异常:{ex.Message}";
                }
            }
        }
    }



天正软件T20V7.0\8.0\9.0正式版注册机

天正软件T20V7.0\8.0\9.0正式版注册机,支持天正建筑T20V7.0、天正建筑T20V8.0、天正建筑T20V9.0以及,天正其他软件的7.0、8.0、9.0版本注册,包括不限于天正T20结构软件、建筑软件、暖通软件、节能软件、碳排放软件、日照软件、给排水软件、电气软件。

使用教程:

1、安装天正正版软件,本站提供下载。

2、运行注册软件,执行补丁命令。

3、完成安装,即可使用。