我有一个相当大的数据集,我需要将多个条目组合成一个值.我的数据集包含两个数据集组合的数据,每个数据集都使用自己的ID和密钥.
我想过使用这样的Sumproduct()
函数:
=SUMPRODUCT(--('Raw data'!C:C=Landgebruik!A2);--('Raw data'!O:O={20;21;22;23;40});'Raw data'!S:S)
与Landgebruik!A2
保持的ID为第一数据集,这是我需要聚合的第二数据集.
'Raw data'!O:O
包含第二个数据集中的ID.在上面的例子中,'Raw data'!S:S
当第二个ID的值是这些值中的任何一个时,我需要对面积(in )求和:{20;21;22;23;40}
.(OR逻辑)该列仅包含整数值.
有没有其他方法可以解决这个问题,然后复制--('Raw data'!O:O=20)
数组中的所有值?
编辑:
我现在一直在处理,这是:=SUMPRODUCT(--('Raw data'!C:C=Landgebruik!A2);--('Raw data'!O:O=20)+('Raw data'!O:O=20)+('Raw data'!O:O=21)+('Raw data'!O:O=22)+('Raw data'!O:O=23)+('Raw data'!O:O=40);'Raw data'!S:S)
.但我觉得应该有更优雅的方式来做这件事.
考虑以下数据帧:
df <- data.frame(row_id = c("r1","r2","r3","r4","r1","r2","r3","r4"),
v1 = c(3,2,5,2,5,2,6,4),
v2 = c(4,3,5,3,7,4,6,7))
Run Code Online (Sandbox Code Playgroud)
我想用“ row_id”求和。也就是说,对于具有row_id:“ r1”的行,我想进行以下计算:(3 * 4)+(5 * 7)。等等。
因此,我最终将具有以下矩阵:
df1 <- data.frame(row_id = c("r1","r2","r3","r4"),
v1 = c(47,14,61,34))
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
谢谢。
有时,我使用sumproduct固有的数组功能来避免不必通过Control Shift Enter输入公式。但这并不总是有效的。例如
=SUMPRODUCT((LEN(B2:F2)-LEN(SUBSTITUTE(B2:F2,M$2:M$10,"")))*N$2:N$10)
Run Code Online (Sandbox Code Playgroud)
会工作,而
=SUMPRODUCT(--IF(ISNUMBER(N6:N9),N6:N9))
Run Code Online (Sandbox Code Playgroud)
不会。
对于我来说,不是很明显,为什么第一个给出正确的结果,而第二个却没有。
我试图得到多个标准的总和:
从下图中可以看出,我设法在excel中使用SumProduct得到答案.当我尝试使用VBA获得与SumProduct相同的答案时,我会收到错误13类型不匹配.
图片:
有什么建议?
码:
Option Explicit
Sub test()
Dim Criteria1 As String, Criteria2 As String
Dim Lastrow As Long, Result As Double
Dim rng1 As Range, rng2 As Range, rng3 As Range
With ThisWorkbook.Worksheets("Sheet1")
Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
Set rng1 = .Range("A3:A" & Lastrow)
Set rng2 = .Range("C3:C" & Lastrow)
Set rng3 = .Range("K3:K" & Lastrow)
Criteria1 = "Get"
Criteria2 = "Yes"
Result = Application.Evaluate("SumProduct(--(rng1 = Criteria1),--(rng2 = Criteria2),--rng3))")
End With
End Sub
Run Code Online (Sandbox Code Playgroud) 假设我们在谷歌表格中有以下电子表格:
a a
b b
c
d e
e d
Run Code Online (Sandbox Code Playgroud)
如何构建一个公式来计算 B 列中与 A 列中的相应行不匹配且不为空的行数?换句话说,我想获取 B 列中更改为新字母的行数。因此,在此示例中,公式应返回 2。
感谢您的帮助。
更新:
现在假设我有这个电子表格:
a a
b b b
c a
d e e
e d e
Run Code Online (Sandbox Code Playgroud)
我将如何构建第三列的最后一个公式,其中返回的值是:
本例中返回的值应为 2(第 3 行和第 5 行)。
countif google-sheets array-formulas google-sheets-formula sumproduct
我有一个数据框df
如下:
prod sd c1 c2 c3
1 NA NA 0.5 0.25 0.25
2 NA NA 0.5 0.50 0.00
3 NA NA 0.5 0.00 0.50
Run Code Online (Sandbox Code Playgroud)
和一个向量v = c(0.1, 0.2, 0.3)
。
对于每一行,我想“求和”df$[,c(3:5)] * v
并将结果放入df$prod
,这样:
df$prod[1] <- (0.5 * 0.1) + (0.25 * 0.2) + (0.25 * 0.3)
df$prod[2] <- (0.5 * 0.1) + (0.5 * 0.2) + (0 * 0.3)
Run Code Online (Sandbox Code Playgroud)
我已经阅读了许多关于复制 Excels 的 sumproduct 函数的不同主题,并尝试了很多不同的东西,但我一直无法提出一个可行的解决方案。如果有帮助,很高兴详细说明无效的内容,但我怀疑我忽略了一些非常简单的内容。非常感谢任何帮助。