Table of contents
在过去的几篇文章中,我们讨论了不同的文本函数--那些用于处理文本字符串的函数。 今天我们的重点是RIGHT函数,它被设计用来从一个字符串的最右边返回指定数量的字符。 像其他Excel文本函数一样,RIGHT非常简单和直接,然而它有一些不显眼的用途,可能被证明有助于你的工作。
Excel RIGHT函数的语法
Excel中的RIGHT函数返回距离文本字符串末尾的指定字符数。
RIGHT函数的语法如下。
RIGHT(text, [num_chars])在哪里?
- 文本 (required) - 你想从中提取字符的文本字符串。
- Num_chars (可选) - 要提取的字符数,从最右边的字符开始。
- 如果 num_chars 如果省略,将返回字符串的最后一个字符(默认)。
- 如果 num_chars 大于字符串中的总字符数,则返回所有字符。
- 如果 num_chars 是一个负数,右键公式会返回#VALUE!错误。
例如,要从A2单元格的字符串中提取最后3个字符,请使用这个公式。
=RIGHT(A2, 3)
其结果可能与此类似。
重要提示!Excel RIGHT函数总是返回一个 文字串 要强制右键公式输出一个数字,请将其与VALUE函数结合使用,如本例所示。
如何在Excel中使用RIGHT函数--公式实例
在现实生活中的工作表中,Excel RIGHT函数很少单独使用。 在大多数情况下,你将与其他Excel函数一起使用,作为更复杂公式的一部分。
如何获得某个字符之后的子串
如果你想提取某个特定字符后面的子串,可以使用SEARCH或FIND函数来确定该字符的位置,从LEN函数返回的字符串总长度中减去该位置,然后从原始字符串的最右边拉出这么多字符。
右图( 绳子 , LEN( 绳子 ) - 搜索( 特征 , 绳子 ))比方说,A2单元格包含了用空格隔开的名字和姓氏,你想把姓氏拉到另一个单元格。 只要把上面的通用公式放在A2的位置,就可以了。 绳子 ,以及""(空格)的步伐。 字。
=right(a2,len(a2)-search(" ",a2))
该公式将产生以下结果。
以类似的方式,你可以得到任何其他字符后面的子串,例如逗号、分号、连字符等。例如,要提取连字符后面的子串,使用这个公式。
=right(a2,len(a2)-search("-",a2))
其结果将与此相似。
如何在最后一次出现的分隔符之后提取子串
当处理包含同一分隔符多次出现的复杂字符串时,你可能经常需要检索最后一个分隔符出现的右边的文本。 为了使事情更容易理解,看看下面的源数据和期望的结果。
正如你在上面的截图中所看到的,A列包含一个错误列表。 你的目标是提取每个字符串中最后一个冒号之后的错误描述。 另外一个复杂的问题是,原始字符串可能包含不同数量的分隔符实例,例如A3包含3个冒号,而A5只有一个。
找到解决方案的关键是确定源字符串中最后一个分隔符的位置(本例中最后出现的是冒号)。 要做到这一点,你将需要使用一些不同的函数。
- 获取原始字符串中分隔符的数量。 这是一个简单的部分。
- 首先,你用LEN函数计算出字符串的总长度:LEN(A2)
- 其次,通过使用SUBSTITUTE函数计算没有定界符的字符串的长度,该函数将所有出现的冒号替换为空号:LEN(SUBSTITUTE(A2,":",")
- 最后,用字符串的总长度减去没有分隔符的原始字符串的长度:LEN(A2)-LEN(SUBSTITUTE(A2,":",")
为了确保公式的正确性,你可以在一个单独的单元格中输入它,结果将是2,也就是A2单元格中的冒号数量。
- 用一些独特的字符替换最后的分隔符。 为了提取字符串中最后一个分隔符之后的文本,我们需要以某种方式 "标记 "最后出现的分隔符。 为此,让我们用一个在原始字符串中没有出现的字符替换最后出现的冒号,例如用一个磅符号(#)。
如果你熟悉Excel SUBSTITUTE函数的语法,你可能记得它有第四个可选参数(instance_num),允许只替换指定字符的特定出现。 由于我们已经计算了字符串中分隔符的数量,只需在另一个SUBSTITUTE函数的第四个参数中提供上述函数。
=substitute(a2,":", "#",len(a2)-len( substitute(a2,":","))
如果你把这个公式放在一个单独的单元格中,它将返回这个字符串。 ERROR:432#连接已超时
- 获取最后一个分隔符在字符串中的位置。 根据你用什么字符替换了最后一个分隔符,使用不区分大小写的SEARCH或区分大小写的FIND来确定该字符在字符串中的位置。 我们用#号替换了最后一个冒号,所以我们使用以下公式来找出它的位置。
=search("#", substitute(a2,":", "#",len(a2)-len( substitute(a2,":",")))))
在这个例子中,该公式返回10,也就是#在被替换字符串中的位置。
- 返回最后一个分隔符右边的子串。 现在你知道了字符串中最后一个分隔符的位置,你所要做的就是用字符串的总长度减去这个数字,然后让RIGHT函数从原始字符串的末尾返回这么多的字符。
=right(a2,len(a2)-search("$",subsection(a2,":","$",len(a2)-len(subsection(a2,":",")))))
如下面的截图所示,该公式工作得很完美。
如果你正在处理一个大的数据集,不同的单元格可能包含不同的分隔符,你可能想把上述公式包含在IFERROR函数中,以防止可能的错误。
=iferror(right(a2,len(a2)-search("$",substitute(a2,":","$",len(a2)-len(substitute(a2,":","))))),a2)
如果某个字符串不包含一个指定的分隔符,将返回原始字符串,就像下面截图中的第6行。
如何从一个字符串中删除前N个字符
除了从字符串的末尾提取子串外,当你想从字符串的开头删除一定数量的字符时,Excel的RIGHT函数就会派上用场。
在前面的例子中使用的数据集中,你可能想删除出现在每个字符串开头的 "ERROR "一词,只留下错误号码和描述。 要做到这一点,从字符串总长度中减去要删除的字符数,并将该数字提供给 num_chars 的参数。
右图( 绳子 , LEN( 绳子 )- 要删除的字符数 )在这个例子中,我们从A2的文本字符串中移除前6个字符(5个字母和一个冒号),因此我们的公式如下。
=right(a2, len(a2)-6)
Excel的RIGHT函数可以返回一个数字吗?
正如本教程开头所述,即使原始值是数字,Excel 中的 RIGHT 函数也总是返回文本字符串。 但是,如果您处理的是数字数据集,并且希望输出也是数字,该怎么办? 一个简单的变通方法是将 Right 公式嵌套到 VALUE 函数中,该函数专门用于将代表数字的字符串转换为数字。
例如,要从A2的字符串中提取最后5个字符(邮编),并将提取的字符转换为数字,请使用此公式。
=value(right(a2, 5))
下面的截图显示了结果--请注意B列的数字是右对齐的,而A列的文本字符串是左对齐的。
为什么RIGHT函数不能与日期一起使用?
由于Excel的RIGHT函数是为处理文本字符串而设计的,而日期在Excel内部系统中是由数字表示的,所以Right公式不能检索日期的个别部分,如日、月或年。 如果你试图这样做,你将得到的只是代表日期的数字的最后几位。
假设,你有日期 18-Jan-2017 如果你试图用RIGHT(A1,4)公式提取年份,结果将是2753,这是数字42753的最后4位,代表Excel系统中的2017年1月18日。
"那么,我如何检索一个日期的某一部分呢?",你可能会问我。 通过使用以下函数之一。
- 函数DAY提取一天: =DAY(A1)
- 用函数MONTH得到一个月份: =MONTH(A1)
- 用函数YEAR来拉出一个年份: =YEAR(A1)
下面的屏幕截图显示了结果。
如果你的 日期用文本字符串表示 当你从外部来源导出数据时,经常会出现这种情况,没有什么能阻止你使用RIGHT函数来提取字符串中代表日期的某一部分的最后几个字符。
Excel RIGHT函数不工作--原因和解决方案
如果一个正确的公式在你的工作表中不能正常工作,很可能是由于以下原因之一。
- 有一个或多个 后面的空格 要快速删除单元格中的多余空格,可以使用Excel的TRIM函数或Cell Cleaner插件。
- ǞǞǞ num_chars 论点是 小于零 当然,你很难故意在你的公式中加入一个负数,但如果 num_chars 参数由另一个Excel函数或不同函数的组合计算,而你的右键公式返回#VALUE!错误,请确保检查嵌套函数的错误。
- 原始值是一个 日期 如果你密切关注本教程,你已经知道为什么RIGHT函数不能与日期一起工作。 如果有人跳过了上一节,你可以在《为什么Excel的RIGHT函数不能与日期一起工作》中找到全部细节。
这就是在Excel中使用RIGHT函数的方法。 如果想仔细看看本教程中讨论的公式,欢迎你下载下面的工作簿样本。 感谢你的阅读,希望下周在我们的博客上见到你。
可用的下载
Excel RIGHT函数--实例(.xlsx文件)