我一直试图通过使用公式找到一种在excel中拆分数字的方法。
目的是使用下面的列表
Pens: Black:30 Blue:20 Red:47 Green:17 Total:114
要拆分成不同的方框,方框的数量由一个方框中可容纳的笔数决定,在这种情况下,最大值为22。
方框计算的公式:
`=114 / 22 = 5.18`
将其四舍五入为需要的6个框
是否有任何能够将数字分成方框的公式,颜色可以混合,不一定只有一种颜色。
注意:如果盒子可以很好地分成6个盒子,那么这些盒子不必填充到最大值。
The expected output: when splitting nicely Pen: Black : 19 11 0 0 0 0 Blue: 0 8 12 0 0 0 Red: 0 0 7 19 19 2 Green: 0 0 0 0 0 17 Total: 19 19 19 19 19 19
答案 0 :(得分:1)
Excel完全与数字有关,因此最好只在单元格中存储数字。像这样,您可以更轻松地添加,减少,乘法和除法。因此,您的列表似乎是这样的:
应该是这样的:
要完成此操作,您可以使用A
标签中的Text to Columns
功能将列Data
拆分为两列,然后拆分为:
。
或者,您也可以按原样保留所有内容,并仅在每个单元格中存储数值。然后,您可以更改每个单元格的数字格式,以显示您想要的文本:
注意,只有数字17
存储在单元格中(从公式栏中可以看到)。然而,此单元格的数字格式确保它显示为Green:17
。
如果您不关心上述任何内容,只想快速解决存储在a列中的所有文本,那么您可以使用以下数组公式:
{=ROUNDUP(SUM(VALUE(MID(A2:A5,FIND(":",A2:A5)+1,LEN(A2:A5))))/22,0)}
注意公式周围的弧形括号,表示数组公式。您必须输入公式而不使用弯曲括号并按Ctrl
+ Alt
+ Return
。 Excel将自动放置弯曲括号,从而确认这是一个数组公式:
答案 1 :(得分:1)
如果这是您的输入:
然后以下将打印" 6"在控制台中:
Option Explicit
Public Sub TestMe()
Dim rngA As Range
Dim units As Long
units = 22
Set rngA = Range("A1")
Debug.Print RoundUp(Split(rngA, ":")(1) / units)
End Sub
Public Function RoundUp(val As Double) As Double
If (val - Int(val)) <> 0 Then
RoundUp = Round(val + 0.5)
Else
RoundUp = val
End If
End Function
&#34;魔法&#34;来自RoundUp
函数,如果它不是整数,则将值加0.5,从而确保向上舍入。