Excel-在列中添加给定的数字';如果他们';与行中的值重新关联
可能很复杂,让我给你一些背景知识: 我有一个包含以下数据的电子表格:Excel-在列中添加给定的数字';如果他们';与行中的值重新关联,excel,vba,Excel,Vba,可能很复杂,让我给你一些背景知识: 我有一个包含以下数据的电子表格: H列包含1794-2011年的日期(在“H”中有 每个出席会议的立法者的每个日期的多份副本 (日期) 列Q包含从-1到我想要的1的分数 计算中每个日期Q列中的平均“正值” H列,然后将其打印出来 例如: 1794: Average Positive Value : .65, Average Negative: -.20 1795: Average Positive Value: .75, Average Negative:
1794: Average Positive Value : .65, Average Negative: -.20
1795: Average Positive Value: .75, Average Negative: -.11
我试着四处搜索,想知道如何做到这一点,但我不知道相关的搜索词。希望能得到一些帮助
谢谢 这可能被认为是一种黑客行为,但您可以只使用一些隐藏列,这些列的每个数据点都有一个复制的IF公式。举例说明: 添加另一列A,其中包含IF(Q>0,Q,0) 添加另一列B,其中包含IF(Q>0,1,0) 添加另一列C,其中包含IF(Q<0,Q,0) 添加另一列D,其中包含IF(Q<0,1,0)
然后,为了确定平均值,您可以简单地分别进行求和(a)/求和(B)和求和(C)/求和(D),因为它是总值除以真实发生次数 这里介绍一种使用数组公式的简单方法。请查看快照
=IFERROR(AVERAGE(IF(($H$1:$H$7=K10)*($Q$1:$Q$7>0),$Q$1:$Q$7)),"")
您必须使用CTL+SHIFT+enter输入
您应该能够使用SUMIFS/COUNTIFS进行此操作 对于正值:
=sumifs(Q:Q,H:H,1794,Q:Q,">0")/countifs(H:H,1794,Q:Q,">0")
=sumifs(Q:Q,H:H,1794,Q:Q,"<0")/countifs(H:H,1794,Q:Q,"<0")
对于负值:
=sumifs(Q:Q,H:H,1794,Q:Q,">0")/countifs(H:H,1794,Q:Q,">0")
=sumifs(Q:Q,H:H,1794,Q:Q,"<0")/countifs(H:H,1794,Q:Q,"<0")
=sumifs(Q:Q,H:H,1794,Q:Q,”没有数组公式的解决方案是使用SUMPRODUCT
=SUMPRODUCT(--(H1:H7=K10),--(Q1:Q7>0),Q1:Q7)/SUMPRODUCT(--(H1:H7=K10),--(Q1:Q7>0))
我用SUMPRODUCT摘取了下面显示的Siddharth示例
在SQL Server甚至Ms Access这样的数据库中更容易操作。日期是如何格式化的?我假设1900年之前的日期是文本格式的。1900年之后的日期是文本格式的还是Excel日期格式的?+1另一个好方法:)只是一个建议。您可能需要添加IFERROR()
否则,如果找不到特定的值,它将给您一个#DIV/0!
。例如,在我下面的案例中1795:)是的。IFERROR应该是标准做法。以至于有人应该用IFERROR制作一个宏来包装/展开电子表格中的所有公式。SUMIFS/COUNTIFS等同于使用AVERAGEIFS,因此这将是preferable=AVERAGEIFS(Q:Q,H:H,1794,Q:Q,“>0”)
在不知道版本的情况下,最好避免使用iferror和sumifs/AVERAGEIFS。很好,罗杰,我有这样一个宏;)它还检查版本并使用if(iError)(对于较旧的版本。的确,数组公式确实更适合手头的任务,但可能会很吓人。