excel公式中的行反转

excel公式中的行反转,excel,Excel,(A) 积(A1:A3,B1:B3)==A1*B1+A2*B2+A3*B3 相反,我想要的是 (B) 积(A1:A3,反向(B1:B3))==A1*B3+A2*B2+A3*B1 在Excel2003/Excel2007中是否有一种干净的方法来实现这一点?这些值的自然顺序是A1->A3和B1->B3,因此颠倒单元格的含义并不令人满意;但是在工作表的其他地方创建B1:B3的反向副本似乎很笨拙。检查中的主题“转置数据列表”检查中的主题“转置数据列表”我看不到不涉及(a)VBA中的自定义函数(或类似)或

(A) 积(A1:A3,B1:B3)==A1*B1+A2*B2+A3*B3

相反,我想要的是

(B) 积(A1:A3,反向(B1:B3))==A1*B3+A2*B2+A3*B1


在Excel2003/Excel2007中是否有一种干净的方法来实现这一点?这些值的自然顺序是A1->A3和B1->B3,因此颠倒单元格的含义并不令人满意;但是在工作表的其他地方创建B1:B3的反向副本似乎很笨拙。

检查中的主题“转置数据列表”

检查中的主题“转置数据列表”

我看不到不涉及(a)VBA中的自定义函数(或类似)或(b)具有部分结果的额外列的解决方案


如果您不喜欢C列变成(隐藏的)反向列表,您会接受C列变成这样的列表:A1*B3、A2*B2、A3*B1,然后可以求和吗?可以使用@e.tadeu的答案中提到的类似公式(使用OFFET和ROW函数)来获得此结果。

我看不到一个解决方案不涉及(a)VBA中的自定义函数(或类似)或(b)带有部分结果的额外列


如果您不喜欢C列变成(隐藏的)反向列表,您会接受C列变成这样的列表:A1*B3、A2*B2、A3*B1,然后可以求和吗?可以使用@e.tadeu的答案中提到的类似公式(使用OFFET和ROW函数)来获得这个结果。

我偶然遇到这个问题,因为我试图找到这个问题的答案,特别是一个与SUMPRODUCT一起使用的解决方案

上一篇带有链接的帖子很有用,下面的内容已经设计好了。请注意,为了简单明了,原始参考已被更改,以使电子表格公式更易于理解。如果需要对列应用反转,则可以通过使用间接和R1C1引用样式来实现必要的更改(间接、列和列函数文档将证明是有用的)

在Excel(在Excel 2010中检查)中,将A6:A8中的数组与B6:B8(比方说B8:B6)中的数组反向相乘的公式可能是

Excel的反转部分是
N(偏移量(B6:B8,行(B6:B8)-行(间接(“A1:A”&行(B6:B8))),0))
,它也可以在任何地方用作多单元格数组公式(ctrl-shift-enter)-要反转的数组在B6:B8中

简要说明:
N()
是将OFFSET返回的引用转换为可在产品内部使用的值数组所必需的。(OFFSET without N()表示SUMPRODUCT中的公式不起作用,它将大多数非数字转换为0,正如预期的那样,它将TRUE转换为1。)

偏移量获取电子表格上的数组,并将值按相反顺序放置。(在本例中,3-1=2处的原始偏移量变为新的数组位置0,3-2=1变为1,最后3-3=0变为2。)ROW()函数创建一个连续数字数组,可以从总数组的长度中减去该数组[请注意,没有最后的S,A1:A3用于获得{1,2,…},最多为原始数组/范围中的行数。]

此公式在OpenOffice/LibreOffice电子表格应用程序中不起作用。但是,随着模拟方法变得更加灵活,索引也可以变得更加灵活

OpenOffice/LibreOffice可以使用相同的方法,但具有索引功能。OpenOffice/LibreOffice解决方案在Excel中不起作用,因为Excel不接受索引的行\u num/col\u num中的数组(任何作为参数的数组都将成为数组的单个顶部元素)

在OpenOffice/LibreOffice(在ApacheOpenOffice 4中检查)中,将A6:A8中的数组与B6:B8中的数组反向生成的公式可以是

=SUMPRODUCT(A6:A8,INDEX(B6:B8,1+ROWS(B6:B8)-ROW(INDIRECT("A1:A"& ROWS(B6:B8))),0))
OpenOffice的反转部分是
索引(B6:B8,1+行(B6:B8)-行(间接(“A1:A”&行(B6:B8))),0)
,它也可以在任何地方用作多单元格数组公式(ctrl-shift-enter)-要反转的数组位于B6:B8中

Excel版本使用这种方法(谢谢,XOR LX:),这可能非常有用,因为索引可以采用数组,而偏移量只能引用工作表:

=SUMPRODUCT(A6:A8,INDEX(B6:B8,N(INDEX(1+ROWS(B6:B8)-ROW(INDIRECT("A1:A"& ROWS(B6:B8))),,)),0))
[与上面Excel的偏移版本一样,带有N(索引([…],)修改的公式在OpenOffice中不起作用,如果使用该应用程序,则必须删除包装函数。]

该方法类似于Excel中用于偏移的方法。考虑到索引使用以1开头的索引,而偏移量以0开头。与前一种情况一样,从A1:A3中的行号动态创建一个数组,用作数组和位置更改索引的模板


这个很晚的回答不太可能对原始海报有所帮助,但它可能会为未来用户解决类似问题节省时间。

我偶然遇到这个问题,因为我正试图找到这个问题的答案,特别是要与SUMPRODUCT一起使用的解决方案

上一篇带有链接的帖子很有用,下面的内容已经设计好了。请注意,为了简单明了,原始参考已被更改,以使电子表格公式更易于理解。如果需要对列应用反转,则可以通过使用间接和R1C1引用样式来实现必要的更改(间接、列和列函数文档将证明是有用的)

在Excel(在Excel 2010中检查)中,将A6:A8中的数组与B6:B8(比方说B8:B6)中的数组反向相乘的公式可能是

Excel的反转部分是
N(偏移量(B6:B8,行(B6:B8)-行(间接(“A1:A”&行(B6:B8))),0))
,它也可以在任何地方用作多单元格数组公式(ctrl-shift-enter)-要反转的数组在B6:B8中

简要说明:
N()
是将OFFSET返回的引用转换为可在产品内部使用的值数组所必需的。(不带N的偏移量()使公式在SUMPRODUCT中不起作用,并且它是c
=SUMPRODUCT(A6:A8,INDEX(B6:B8,N(INDEX(1+ROWS(B6:B8)-ROW(INDIRECT("A1:A"& ROWS(B6:B8))),,)),0))