excel - 使用基于其他列中的值的循环添加/计算多个条件的行
问题描述
我有一个 excel 表,如下图所示:
我需要:
将每个职位的金额和成本相加(全部为 1,全部为 2,全部为 3,......)。
然后在 Actual 中查找“X”,然后合并该行上 Position 值相等的所有行,因此这应该是最后该位置的前导行和唯一剩余行。但它不应该在同一张纸上,而应该在一张新的纸上。基本上,在这个例子中,会有第二张三行的工作表(因为这个例子中有 3 个位置)
它需要是动态的。这里可以有任意数量的职位
每个职位都应采用实际中 X 的职位的描述、日期等。
还有更多的列和更多的计算需要完成,所以添加计算条件应该很容易。
我不是 Excel Pro,我认为不编写 Makro 是不可能解决这个问题的,所以请随时证明我错了……
到目前为止,我根据我在网上找到的一些片段编写了以下 VBA 代码,但不幸的是,我只添加了特定的行(具有相同的位置编号)并在实际中用“x”输出位置的总和:
Sub MergeRows()
Dim r_src As Range, r_dst As Range
' Pick 1st row and column of table
Set r_src = Sheets("Sheet1").Range("A2")
Set r_dst = Sheets("Sheet2").Range("A2")
Dim i As Integer, j As Integer
Dim N_rows As Integer, N_cols As Integer
'Find the size of the data
N_rows = CountRows(r_src)
N_cols = CountColumns(r_src)
'Resize source range to entire table
Set r_src = r_src.Resize(N_rows, N_cols)
Dim src_vals() As Variant, dst_vals() As Variant
'Get all the values from source
src_vals = r_src.Value2
ReDim dst_vals(1 To N_rows, 1 To N_cols)
Dim k As Integer
Dim x As Integer
k = 0
For i = 1 To N_rows
For x = 1 To 10
' Check first column
If Val(src_vals(i, 1)) = x Then
' Increment count
k = k + 1
' Copy row values
Dim qty As Integer
qty = qty + src_vals(i, 27)
src_vals(i, 27) = qty
For j = 1 To N_cols
If src_vals(i, 2) = "X" Then
dst_vals(k, j) = src_vals(i, j)
End If
Next j
End If
Next x
qty = 0
Next i
' Bring rows back into destination range
If k > 0 Then
r_dst.Resize(k, N_cols).Value2 = dst_vals
End If
End Sub
Public Function CountRows(ByRef r As Range) As Integer
CountRows = r.Worksheet.Range(r, r.End(xlDown)).Rows.Count
End Function
Public Function CountColumns(ByRef r As Range) As Integer
CountColumns = r.Worksheet.Range("A:DS").Columns.Count
End Function
解决方案
请检查这个
图 1:对不起德国的截图。
“Summe von Amount/Costs”是指“金额/成本的总和”,“Gesamtergebnis”是指“总结果”。
这可以通过数据透视表(不使用 VBA)来完成,它会动态更新。
请参阅创建数据透视表以分析工作表数据。
只需将数据透视表添加Position
到行Amount
和Costs
值。
推荐阅读
- reactjs - 数据表不显示
- vb.net - 如何为VB.NET windows窗体中的控件分配被动易更改样式(类似于android styles.xml)
- ssl - 如何使用 cpprestsdk 设置 websocket SSL 连接?
- python - 类型错误:预期 c_float_Array_12_Array_3 实例,得到 glm.vec3,seg 错误
- javascript - 当我将图像上传到 django 中的数据库时,nonetype' 对象没有属性 'decode' 错误
- docker - ubuntu-core as container os in base image
- php - Dropzone.js and dropbox API
- authentication - 启用 Kerberos 时,Apache Drill 上的模拟失败
- java - 多线程让 Java 大文件处理变得更糟
- java - Pom.xml with local jar and concurrent dependency