
我需要在VBA中编写一个脚本,以便如果列B具有ax(或刚填充),然后转到它左边的单元格并获取值,我想在工作表上执行此操作,我希望能够根据需要计算项目的总成本.
我会在按钮点击的情况下运行它,所以我希望它获取所有值,添加它们,并显示总数,但仅限于带有ax的值(在B列中).
如果关联值在用作过滤条件的值范围内,我试图返回一系列单元格的总和.例如,使用以下数据表:
Keys Values
A 500
B 300
C 600
D 20
A 150
C 600
Run Code Online (Sandbox Code Playgroud)
以及要汇总的以下键列表:
Sum Keys:
A
D
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种公式化的方式来回归500 + 20 + 150 = 670.
我知道你可以使用多个SUMIF,但是键的数量会根据用户想要过滤的内容而改变,并且编写足够的SUMIF来覆盖最大的现实情况(如10ish)似乎过多,我觉得必须有一个更方便.
在我看来,公式看起来像这样:
=SUMIFS(Values, Keys, OR(Sum Keys), ...(optional other conditions))
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个简单的VBA问题,但我试图避免这种情况,因为电子表格将由具有不同(或没有)VBA知识的人员进行审核.此外,向数据添加指示符列以显示密钥是否在Sum Keys范围内是不现实的,因为将有多个标签汇总数据,每个标签都有自己的过滤器Key
任何帮助都表示赞赏,但我意识到如果没有VBA,这可能是不可能的.如果需要更多信息,请告诉我.
谢谢!
编辑:谢谢巴里houdini的答案!根据可接受标准的多个范围,查看他的帖子中关于求和的一般解决方案的评论.
计算范围内整数的 90% 百分位A1:A10可以通过公式来完成=PERCENTILE(A1:A10, 0.9)。这通常很有效,但如果范围内的一个或多个单元格A1:A10是错误的(标记为#N/A),则计算的百分位值也是#N/A。
是否可以仅使用 Excel 公式来计算范围内所有值(包含错误值的单元格除外)的百分位数A1:A10?
我正在尝试使用 XlsxWriter 创建新工作表,以在循环的每次新迭代中将数据写入新工作表。
我的代码如下:
workbook = xlsxwriter.Workbook('Report.xlsx')
for i in range(0, len(list)):
worksheet = workbook.add_worksheet()
#Extract data from the list and add it to the excel sheet
workbook.close()
Run Code Online (Sandbox Code Playgroud)
现在,此方法的问题是我只看到一个工作表,而不是多个工作表。
我哪里错了?
这是一个相当短的问题,可能很容易回答,但是我自己在这一点上没有这样做:
样本数据:
A
B
C
Run Code Online (Sandbox Code Playgroud)
示例代码:
With Sheet1
Debug.Print Application.WorksheetFunction.Match("D", .Columns(1), 0) 'Option1
Debug.Print Application.Match("D", .Columns(1), 0) 'Option2
Debug.Print WorksheetFunction.Match("D", .Columns(1), 0) 'Option3
End With
Run Code Online (Sandbox Code Playgroud)
题:
我知道 option2 丢失了智能感知并且不会进入调试模式,但是 option1 和 option3 的行为相同
虽然关于WorksheetFunction对象的文档说我们可以使用对象的WorksheetFunction属性Application,但不这样做似乎也能正常工作。
那么,Application在这方面使用对象引用有什么附加价值,不使用它有什么缺点呢?
我有一段代码应该按名称检查是否存在工作表。如果工作表存在,则存在一些复制和过去的功能,如果工作表不存在,则将创建,并且将遵循相同的复制过去的功能。我无法获取正确的布尔值来返回主子。布尔值始终注册为false(我知道这是默认值)。我尝试了几种不同的方法来更正此问题,但仍然遇到问题。我真的可以使用一些帮助,这可能很容易解决。
Sub BreakOutCategories()
Dim catSheet As Worksheet
Dim catName As String
Dim Range1 As Range
Dim gRange As Range
Dim toSheet As Worksheet
Dim CheckSheet As Boolean
Dim CreateSheet As Boolean
Dim i As Long
Set catSheet = Sheets("MasterList")
Set Range1 = catSheet.Range("A1", catSheet.Range("A1").End(xlDown))
For Each gRange In Range1
i = 0
catName = gRange.Value
CheckMySheet (catName)
If CheckSheet = True Then
toSheet = Sheets(gRange.Value)
gRange.Offset(0, 1).Copy
toSheet.Range("A1", toSheet.Range("A1").End(xlDown)).Offset(1, 0).Paste
gRange.Offset(0, 1).Copy
toSheet.Range("E1", toSheet.Range("E1").End(xlDown)).Offset(1, 0).Paste
gRange.Offset(0, 2).Copy
toSheet.Range("B1", toSheet.Range("B1").End(xlDown)).Offset(1, 0).Paste …Run Code Online (Sandbox Code Playgroud) 我在一列中列出了4000个不同的价格值.我想计算列中第一个X值的平均值,并在单元格"B21"中显示结果.X的值可以改变并位于单元格"B20"中.我如何使用excel函数来执行此操作?也许平均和抵消?
我复制并粘贴了一个代码,但它无法正常工作.我没有改变任何东西,我正在弄清楚它为什么不起作用.过了一会儿,我想我找到了这个bug.我不知道如何解决它.这是代码
GroupPresence = WorksheetFunction.CountIf(Range("B1:D19"), salk)
Run Code Online (Sandbox Code Playgroud)
它必须是这样的:
GroupPresence = WorksheetFunction.Worksheet("Sheet9").CountIf(Range("B1:D19"), salk)
Run Code Online (Sandbox Code Playgroud)
代码错了?有人知道在引用另一张表时正确的代码是什么.
我有一个65000行的工作表.每行中的第一个单元格来自1,500个值的列表.例如:
PartNumber1|Application1
PartNumber1|Application2
PartNumber1|Application3
PartNumber2|application1
Partnumber2|Application2
PartNumber3|Application1
PartNumber3|Application2
PartNumber3|Application3
Run Code Online (Sandbox Code Playgroud)
等等...
我需要获得如下输出
PartNumber1,Application1,application2,application3
PartNumber2,Application1,Application2
PartNumber3,Application1,Application2,Application3 ....etc
Run Code Online (Sandbox Code Playgroud)
现在,在Excel中,我可以创建数据透视表 - 但我希望将CSV文件导入数据库.
谁能指出我正确的方向?
excel pivot-table worksheet-function excel-formula export-to-csv
excel ×10
vba ×4
excel-vba ×2
boolean ×1
excel-2007 ×1
function ×1
percentile ×1
pivot-table ×1
python ×1
xlsxwriter ×1