Excel 如果行中包含特定文本,则将行中的单元格分割
我想看看范围“A2:A500”是否包含文本“US”,如果包含,我想在指定行中分割单元格C和B。例如,如果单元格A5包含US,则只应划分B5/C5。这可能吗 我的公式Excel 如果行中包含特定文本,则将行中的单元格分割,excel,excel-formula,vba,Excel,Excel Formula,Vba,我想看看范围“A2:A500”是否包含文本“US”,如果包含,我想在指定行中分割单元格C和B。例如,如果单元格A5包含US,则只应划分B5/C5。这可能吗 我的公式 =IF(A2:A500="US*"; "$B2/$C500";"") 是的,这是可能的,有一个假设(1)只有一个“我们”,如果有的话。从技术上讲,如果有多个单元格带有“US”,则可以这样做,但不清楚在这种情况下您要做什么(将这些B行的总和除以这些C行的总和?) 首先,我们将使用MATCH函数确定A列中是否有“US”的实例: =MA
=IF(A2:A500="US*"; "$B2/$C500";"")
是的,这是可能的,有一个假设(1)只有一个“我们”,如果有的话。从技术上讲,如果有多个单元格带有“US”,则可以这样做,但不清楚在这种情况下您要做什么(将这些B行的总和除以这些C行的总和?) 首先,我们将使用MATCH函数确定A列中是否有“US”的实例:
=MATCH("US*",A:A,0)
然后,我们将该公式嵌套在一个索引公式中,从B列和C列中提取值,从我们通过MATCH函数确定的行中提取值
=INDEX(B:B,MATCH("US*",A:A,0))/INDEX(C:C,MATCH("US*",A:A,0))
最后,我们将把整个公式嵌套在IFERROR函数中。如果由于任何原因出现错误,这将允许我们显示不同的值:
=IFERROR(INDEX(B:B,MATCH("US*",A:A,0))/INDEX(C:C,MATCH("US*",A:A,0)),"")
注意-例如,如果我们有匹配项,但该行中C列的值为0,则这也将显示错误,因为它将创建一个被零除的错误。如果希望看到可能存在“除以0”错误,则需要重新构造公式,使其首先检查a列中的匹配项,然后计算除法,如下所示:
=IF(ISERROR(MATCH("US*",A:A,0)),"",INDEX(B:B,MATCH("US*",A:A,0))/INDEX(C:C,MATCH("US",A:A,0)))
我觉得很简单,只需使用单元格的前两个字符,使用
LEFT
公式测试字符串是否为US
你有这个:
+----+-------+-------+-------+
| | Col A | Col B | Col C |
+----+-------+-------+-------+
| 1 | AG | 26 | 17 |
| 2 | JH | 25 | 22 |
| 3 | UY | 16 | 24 |
| 4 | JH | 11 | 11 |
| 5 | HY | 28 | 14 |
| 6 | BV | 25 | 27 |
| 7 | US | 15 | 18 |
| 8 | HY | 30 | 21 |
| 9 | HN | 21 | 22 |
| 10 | UY | 20 | 12 |
| 11 | BV | 10 | 23 |
| 12 | TD | 24 | 12 |
| 13 | US | 30 | 26 |
| 14 | UY | 24 | 19 |
| 15 | BG | 15 | 29 |
| 16 | TF | 30 | 23 |
| 17 | US | 27 | 24 |
| 18 | PO | 13 | 14 |
| 19 | US | 20 | 14 |
| 20 | MN | 28 | 20 |
+----+-------+-------+-------+
在单元格D1:D20中,你写下这个
=IF(LEFT(A1,2)="US",B1/C1,0)
这是:
如果单元格的前两个字符A#
(A列中的单元格,任意数字)等于“US”
(如果(左(A1,2)=“US”)
,,则将B除以C(同一行),否则给出A0
结果:
+----+-------+-------+-------+-------+
| | Col A | Col B | Col C | Col D |
+----+-------+-------+-------+-------+
| 1 | AG | 26 | 17 | 0.000 |
| 2 | JH | 25 | 22 | 0.000 |
| 3 | UY | 16 | 24 | 0.000 |
| 4 | JH | 11 | 11 | 0.000 |
| 5 | HY | 28 | 14 | 0.000 |
| 6 | BV | 25 | 27 | 0.000 |
| 7 | US | 15 | 18 | 0.833 |
| 8 | HY | 30 | 21 | 0.000 |
| 9 | HN | 21 | 22 | 0.000 |
| 10 | UY | 20 | 12 | 0.000 |
| 11 | BV | 10 | 23 | 0.000 |
| 12 | TD | 24 | 12 | 0.000 |
| 13 | US | 30 | 26 | 1.154 |
| 14 | UY | 24 | 19 | 0.000 |
| 15 | BG | 15 | 29 | 0.000 |
| 16 | TF | 30 | 23 | 0.000 |
| 17 | US | 27 | 24 | 1.125 |
| 18 | PO | 13 | 14 | 0.000 |
| 19 | US | 20 | 14 | 1.429 |
| 20 | MN | 28 | 20 | 0.000 |
+----+-------+-------+-------+-------+
和的信息
编辑#1
在我的例子中,只需在A列中放入两个字符,但如果A列的单元格有任何字符串,并且其中任何字符串的开头有我们,则公式必须除以B/C
,因为LEFT
函数取字符串的前两个字符。谢谢。但有可能将其作为公式吗?i我认为这是不可能的。如果(COUNTIF(A2:A50;“US*”);$C17/$B17;“”)我把它改成了这个,但现在我给了它“正确的”单元格,它自己能找到“C17/B17”吗A2:A500中的单元格一开始可以有任何字符串吗?像这样的USLJLJO???
+----+-------+-------+-------+-------+
| | Col A | Col B | Col C | Col D |
+----+-------+-------+-------+-------+
| 1 | AG | 26 | 17 | 0.000 |
| 2 | JH | 25 | 22 | 0.000 |
| 3 | UY | 16 | 24 | 0.000 |
| 4 | JH | 11 | 11 | 0.000 |
| 5 | HY | 28 | 14 | 0.000 |
| 6 | BV | 25 | 27 | 0.000 |
| 7 | US | 15 | 18 | 0.833 |
| 8 | HY | 30 | 21 | 0.000 |
| 9 | HN | 21 | 22 | 0.000 |
| 10 | UY | 20 | 12 | 0.000 |
| 11 | BV | 10 | 23 | 0.000 |
| 12 | TD | 24 | 12 | 0.000 |
| 13 | US | 30 | 26 | 1.154 |
| 14 | UY | 24 | 19 | 0.000 |
| 15 | BG | 15 | 29 | 0.000 |
| 16 | TF | 30 | 23 | 0.000 |
| 17 | US | 27 | 24 | 1.125 |
| 18 | PO | 13 | 14 | 0.000 |
| 19 | US | 20 | 14 | 1.429 |
| 20 | MN | 28 | 20 | 0.000 |
+----+-------+-------+-------+-------+