Google sheets 将一个数字减少为一组静态数字

Google sheets 将一个数字减少为一组静态数字,google-sheets,array-formulas,counting,google-sheets-query,cumulative-sum,Google Sheets,Array Formulas,Counting,Google Sheets Query,Cumulative Sum,好的,我有一个谷歌表,我需要把一个数字减少到一个特定的4个数字。然后计算这些数字出现的次数 例如: 它分解为:1,2,3,4 忽视他们的个人价值观,而不是为了被打破 现在乘17路 坐12号 其余部分向下舍入 因此,基本上,它将单元格A1分解为达到A1中数字总数所需的序列数,取整。看起来很奇怪,但 您的序列加上10,因此您的数字十位以上乘以4是您的第一个元素。然后,如果一位数在6到9之间,你加3,3到5加2,或者1到2加1。可能有一个更优雅的公式,这个 =INTA1/10*4+IFMODA1,10

好的,我有一个谷歌表,我需要把一个数字减少到一个特定的4个数字。然后计算这些数字出现的次数

例如:

它分解为:1,2,3,4

忽视他们的个人价值观,而不是为了被打破

现在乘17路

坐12号

其余部分向下舍入

因此,基本上,它将单元格A1分解为达到A1中数字总数所需的序列数,取整。

看起来很奇怪,但

您的序列加上10,因此您的数字十位以上乘以4是您的第一个元素。然后,如果一位数在6到9之间,你加3,3到5加2,或者1到2加1。可能有一个更优雅的公式,这个

=INTA1/10*4+IFMODA1,10>0,1,0+IFMODA1,10>3,1,0+IFMODA1,10>5,1,0似乎很奇怪,但

您的序列加上10,因此您的数字十位以上乘以4是您的第一个元素。然后,如果一位数在6到9之间,你加3,3到5加2,或者1到2加1。可能有一个更优雅的公式,这个

=INTA1/10*4+IFMODA1,10>0,1,0+IFMODA1,10>3,1,0+IFMODA1,10>5,1,0

=ARRAYFORMULA(COUNTA(IFERROR(QUERY(MMULT(TRANSPOSE((
 ROW(INDIRECT("A1:A"&A2*COUNTA(SPLIT(B2, ","))))<=TRANSPOSE(
 ROW(INDIRECT("A1:A"&A2*COUNTA(SPLIT(B2, ","))))))*TRANSPOSE(
 SPLIT(QUERY(B2&IF(ROW(INDIRECT("A1:A"&A2))<>"", ",")
 ,,9^9), ","))), SIGN(TRANSPOSE(
 SPLIT(QUERY(B2&IF(ROW(INDIRECT("A1:A"&A2))<>"", ",")
 ,,9^9), ",")))), "where Col1 <="&A2, 0))))
尝试:


你可能想重申你的问题。我想你是想在谷歌做这件事,因为谷歌不能使用宏函数。给定的集合[1,2,3,4]是常数,还是我们需要为该集合的变化做好准备?你对结果还是过程更感兴趣?有几种方法可以解决这个问题,在没有更多上下文的情况下,我想确保你得到了你真正想要的答案。@Nick Google sheets可以使用宏:你可能想重申你的问题。我想你是想在谷歌做这件事,因为谷歌不能使用宏函数。给定的集合[1,2,3,4]是常数,还是我们需要为该集合的变化做好准备?你对结果还是过程更感兴趣?有几种方法可以解决这个问题,在没有更多上下文的情况下,我想确保你得到了你真正想要的答案。@Nick Google sheets可以使用宏:这是一个很好的代码!请注意,每个主题的顺序始终是静态的。在这种情况下,序列是1,2,3,4。有时是2,4,6,8。这个公式将采用B列中定义的序列?@MichaelDeArmon是的,它将采用这是一个很好的代码!请注意,每个主题的顺序始终是静态的。在这种情况下,序列是1,2,3,4。有时是2,4,6,8。这个公式将采用B列中定义的序列?@MichaelDeArmon是的,但如果我要更改序列值怎么办?如果我要更改序列值怎么办?
Count+Add 1, 2, 3, 4, 1 =  r1
=ARRAYFORMULA(COUNTA(IFERROR(QUERY(MMULT(TRANSPOSE((
 ROW(INDIRECT("A1:A"&A2*COUNTA(SPLIT(B2, ","))))<=TRANSPOSE(
 ROW(INDIRECT("A1:A"&A2*COUNTA(SPLIT(B2, ","))))))*TRANSPOSE(
 SPLIT(QUERY(B2&IF(ROW(INDIRECT("A1:A"&A2))<>"", ",")
 ,,9^9), ","))), SIGN(TRANSPOSE(
 SPLIT(QUERY(B2&IF(ROW(INDIRECT("A1:A"&A2))<>"", ",")
 ,,9^9), ",")))), "where Col1 <="&A2, 0))))