gpt4 book ai didi

vba - 汇总总和和if语句vba

转载 作者:行者123 更新时间:2023-12-03 03:27:14 25 4
gpt4 key购买 nike

我有一份产品列表及其详细信息。第 2 行是标题,第 3 行是详细信息。在 E 列中,我有每种产品的数量,底部有一个总计行。每周我都会收到新数据,因此数据范围会有所不同。数据已按数量从大到小排序。

现在我的任务是找到总数量超过我们销售总量 65% 的行。这意味着我需要对 E 列中的每一行进行求和,以确定哪一行将为我带来超过总销售额 65% 的销售额。

所以我写了一些vba代码,但是我的代码的结果只是row3,其余的都被删除了,没有错误。我正在编写 vba 代码,因为这是我已经编写的较大代码的一部分,因此我只发布这部分代码。

我已将我的数据发布在图片中,但不是整个列表,因为它太长(隐藏了行),但您会了解我想要实现的目标。从本周的数据来看,这意味着我需要删除第 18 行及以下行,因为第 17 行是第一行超过 65% 标记的行。我不需要显示 J 和 K 列,我只是向您展示我对数量进行求和并计算列百分比的含义。

Sub test()
Dim i, j, k As Integer
Dim ValueA, ValueB As Variant
Dim lrE, c, d As Long
Dim sht As Worksheet

Set sht = Worksheets("Zip")
lrE = sht.Cells(Rows.Count, 5).End(xlUp).Row
d = sht.Range("E" & lrE)


For i = 3 To lrE - 1
ValueA = 0.65
ValueB = sht.Cells(i, 5).Value / d
If ValueB <= ValueA Then
ValueB = ValueB + sht.Cells(i, 5).Value
i = i + 1
End If
If ValueB > ValueA Then
c = sht.Cells(i, 5).Row
sht.Rows(c & ":" & Rows.Count).Delete
End If

Next i
End Sub

enter image description here

最佳答案

这将找到占 65% 或更大的第一行并删除其余的。

Sub test()

Set sht = Worksheets("Zip")
lrE = sht.Cells(Rows.Count, 5).End(xlUp).Row

tsum = WorksheetFunction.SUM(sht.Range(sht.Cells(3, 5), sht.Cells(lrE, 5)))

For i = 3 To lrE
Sbtotal = Sbtotal + sht.Cells(i, 5).Value
If Sbtotal / tsum > 0.65 Then
LRow = i
i = lrE + 1
End If
Next i


sht.Rows(LRow + 1 & ":" & lrE).Delete

End Sub

关于vba - 汇总总和和if语句vba,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043401/

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