Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Excel中以a:B格式显示比率?_Excel - Fatal编程技术网

如何在Excel中以a:B格式显示比率?

如何在Excel中以a:B格式显示比率?,excel,Excel,我有一个Excel电子表格,其中包含以下数据: ColumnA ColumnB 33 11 25 5 6 4 我想做的是添加第三列,以a:B的格式显示列a与列B的比率。例如: ColumnA ColumnB Ratio 33 11 3:1 25 5 5:1 6 4 3:2 有人知道实现这一目标的方法吗 提前谢谢。试试这个公式: =SUBSTITUTE(TEXT(A1/B1,"?

我有一个Excel电子表格,其中包含以下数据:

ColumnA ColumnB
33        11
25        5
6         4
我想做的是添加第三列,以a:B的格式显示列a与列B的比率。例如:

ColumnA ColumnB   Ratio
33        11       3:1
25        5    5:1
6         4    3:2
有人知道实现这一目标的方法吗

提前谢谢。

试试这个公式:

=SUBSTITUTE(TEXT(A1/B1,"?/?"),"/",":")
结果:

A   B   C
33  11  3:1
25  5   5:1
6   4   3:2
说明:

  • 文本(A1/B1,“?/?”)将A/B转换为不正确的分数
  • 替换(…)用冒号替换分数中的“/”
这不需要任何特殊的工具包或宏。唯一的缺点可能是结果被认为是文本,而不是数字,因此您可以轻松地将其用于进一步的计算



注意:根据@Robin Day的建议,根据需要增加问号(?)的数量以减少舍入(感谢Robin!)。

该页面上的第二个公式使用了分析工具包的GCD功能,您可以从工具>加载项添加它

=A1/GCD(A1,B1)和“&B1/GCD(A1,B1)


这是一个更加数学化的公式,而不是基于的文本操作。

您正在寻找最大公约数(GCD)

您可以在VBA中递归计算它,如下所示:

Function GCD(numerator As Integer, denominator As Integer)
  If denominator = 0 Then
    GCD = numerator
  Else
    GCD = GCD(denominator, numerator Mod denominator)
  End If
End Function
   ColumnA   ColumnB   ColumnC
1  33        11        =A1/GCD(A1; B1) & ":" & B1/GCD(A1; B1)
2  25         5        =A2/GCD(A2; B2) & ":" & B2/GCD(A2; B2)
并在工作表中使用它,如下所示:

Function GCD(numerator As Integer, denominator As Integer)
  If denominator = 0 Then
    GCD = numerator
  Else
    GCD = GCD(denominator, numerator Mod denominator)
  End If
End Function
   ColumnA   ColumnB   ColumnC
1  33        11        =A1/GCD(A1; B1) & ":" & B1/GCD(A1; B1)
2  25         5        =A2/GCD(A2; B2) & ":" & B2/GCD(A2; B2)
建议将函数调用的结果存储在隐藏列中,并使用此结果避免每行调用函数两次:

   ColumnA   ColumnB   ColumnC        ColumnD
1  33        11        =GCD(A1; B1)   =A1/C1 & ":" & B1/C1
2  25         5        =GCD(A2; B2)   =A2/C2 & ":" & B2/C2

谢谢,你会的。我用了这个:

=CONCATENATE((number1/GCD(number1,number2)),":",((number2/GCD(number1,number2))))

如果你有2007年的经验,这很有效。

下面是我使用的公式。我在使用GCD时遇到了一个问题,因为我使用了相当大的数字来计算比率,我发现像“209:1024”这样的比率没有简单的四舍五入有用,所以它显示为“1:”或“:1”。如果可能的话,我也不喜欢使用宏。下面是结果

=IF(A1>B1,((ROUND(A1/B1,0))&":"&(B1/B1)),((A1/A1)&":"&(ROUND(B1/A1,0))))

有些公式是不必要的(例如,“A1/A1”),但我加入它是为了说明其背后的逻辑。此外,您还可以通过使用每个ROUND函数上的设置来切换发生的舍入量

我发现这是最简单和最短的,但我将小数点后零位四舍五入:

=“1”&:“&ROUND((A1/B1),0)

注意
前后的空格

这意味着“1”和“:”被视为整个公式的附加非公式信息。
舍入
函数将基本公式A1/B1舍入为0位小数。您可以尝试更改为1,2,3。。。小数位


我希望我已经说清楚了。

让我们假设您在D和E单元格中有数据。。 下面是我的第一个“Karthik”显示fn的最简单的比率

=ROUND(D7/E7, 2) &":" & (E7/E7)

在工作中,我们只有Excel 2003可用,这两个公式似乎对我非常适用:

=(ROUND(SUM(B3/C3),0))&":1"


为了使这个公式更准确,你可以用=SUBSTITUTE(文本(A1/B1,“???????/?”、“/”、“:”)替换它。这使得舍入问题不太可能发生。请注意,它是分号,而不是谷歌电子表格中的逗号。正如你所知,Excel有一个GCD函数。你根本不需要VBA来解决这个问题:)@Aaron:你知道;-),此单元格函数在Excel 2007之前似乎不可用。信不信由你,还不是每个人都换了。你可能已经猜到了,我用的是2007。不过我还是先检查了一下。这篇文章说它适用于2003@AaronBush。你的两个链接都断了。@spiky Try web.archive.com(很遗憾,评论无论如何都不能编辑)。这在number1=0的情况下是失败的,当你有更大的数字时,它会更有用