初步问题:Excel VBA sumifs sort and set
所以我有:
int001,int001,..... int024
和29 unique_data。
我想我在这里做错了什么:
Dim iDate As Long
With Range("C1")
For iDate = 1 To nr_unique_dates - 1
.Offset((iDate - 1) * 24 + 1) = Application.WorksheetFunction.SumIfs(INT001, dates, unique_dates(iDate), INT001, ">0")
.Offset((iDate - 1) * 24 + 2) = Application.WorksheetFunction.SumIfs(INT002, dates, unique_dates(iDate), INT002, ">0")
|
|
|
|
.Offset((iDate - 1) * 24 + 22) = Application.WorksheetFunction.SumIfs(INT022, dates, unique_dates(iDate), INT022, ">0")
.Offset((iDate - 1) * 24 + 23) = Application.WorksheetFunction.SumIfs(INT023, dates, unique_dates(iDate), INT023, ">0")
.Offset((iDate - 1) * 24 + 24) = Application.WorksheetFunction.SumIfs(INT024, dates, unique_dates(iDate), INT024, ">0")
Next iDate
但我不知道是什么。
PersonItems = originalItems.Where((person) => person. Name.ToLower().Contains(filter)).ToList();
答案 0 :(得分:2)
编辑
关于输出零的OP澄清之后编辑2
如果您的其他代码与链接的代码保持一致,那么您使用With Range("C1")
而不是原始 With Range("H1")
搞错了,因为C1就在你的 intXXX 数据
由于 intXXX 的24列范围从“B”列到“Y”列,因此您应该使用With Range("Z1")
(或者,为了与数据保持两列,With Range("AA1")
)
您应该完成这样的修改,但我建议您关注@JohnColeman关于“阵列方法”的建议
以下是打开号 intXXX 的“范围方法”:
Option Explicit
Sub Tsum2()
Dim unique_dates As Range, outputRng As Range
Dim nr_unique_dates As Long
Dim iDate As Long, nr_Cols As Long, iCol As Long
With Worksheets("TSums") '<-- change "TSums" with your actual sheet name
Set outputRng = Cells(1, .Columns.Count).End(xlToLeft).Offset(, 2) '<--| set output range as tow columns right of the last non empty cell in row 1
With .Range("G1", .Cells(.Rows.Count, 1).End(xlUp)) '<-- reference the range from cell "A1" to cell in column "G" corresponding to last non empty row in column "A"
nr_Cols = .Columns.Count '<--| store data columns
.Columns(1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=outputRng, Unique:=True '<-- call AdvancedFilter on first column of the referenced range
Set unique_dates = Range(outputRng.Offset(1), outputRng.End(xlDown)) '<--| set unique dates range
nr_unique_dates = unique_dates.Count '<--| store unique dates number
With .Offset(1).Resize(.Rows.Count - 1) '<--| skip headers of reference range
For iDate = 1 To nr_unique_dates '<--| outer loop through unique dates
For iCol = 2 To nr_Cols '<--| inner loop through "int" columns (from column 2 rightwards)
outputRng.Offset((iDate - 1) * (nr_Cols - 1) + iCol - 1, 2) = Application.WorksheetFunction.SumIfs(.Columns(iCol), .Columns(1), unique_dates(iDate), .Columns(iCol), ">0")
Next iCol
Next iDate
End With
End With
End With
With outputRng.Offset(, 2)
.SpecialCells(xlCellTypeConstants).Replace 0, "" '<--| substitute all output "zeros" with a blank value
.SpecialCells(xlCellTypeBlanks).Delete '<--| delete all blanks
End With
End Sub