gpt4 book ai didi

excel - 根据其他列中的值使用循环添加/计算多个条件的行

转载 作者:行者123 更新时间:2023-12-04 01:31:16 24 4
gpt4 key购买 nike

我有一个 excel 表,如下图所示:

enter image description here

我需要:

  1. 将每个职位的金额和成本相加(全部为 1,全部为 2,全部为 3,...)。

  2. 然后在 Actual 中查找“X”,然后合并该行 Position 值相等的所有行,因此这应该是该位置末尾的前导行和唯一剩余行。但它不应该在同一张纸上,而应该在一张新纸上。基本上,在此示例中,将有第二张三行的工作表(因为此示例中有 3 个位置)

  3. 它需要是动态的。这里可以有任意数量的位置

  4. 每个职位应采用实际职位中 X 的描述、日期等。

  5. 还有更多的列和更多的计算需要做,所以添加计算条件应该很容易。

我不是 Excel Pro,我认为如果不编写 Makro 代码就不可能解决这个问题,所以请随时证明我错了......

到目前为止,我根据在网上找到的一些片段编写了以下 VBA 代码,但不幸的是,我只能将特定的行(具有相同的位置编号)相加,并在 Actual 中输出带有“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

最佳答案

请检查这个

enter image description here图 1:抱歉,德语截图。
“Summe von Amount/Costs”是指“金额/成本之和”,“Gesamtergebnis”是指“总结果”。

这可以用数据透视表完成(不使用 VBA),它会动态更新。
参见 Create a PivotTable to analyze worksheet data

只需将数据透视表的 Position 添加到行,将 AmountCosts 添加到 Values。

关于excel - 根据其他列中的值使用循环添加/计算多个条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60987340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com