Excel 如果第4列和第8列中的两个条件为真,则将第12列中的值写入另一工作表 Sub-CreateTable() Dim bf作为布尔值 Dim aTable(),aRes() 暗i等于长,k等于长,n等于长 带有工作表(“DohaddeŽPOLOŽKY”)的列表,位于kde东南赫莱达的塔布尔库 i=.Cells(.Rows.Count,“A”).End(xlUp).row aTable=.Range(“A1:P”和i).Value'tabulka do pole ReDim aRes(1对i+1,1对1)“velikost磁极 以 对于i=1至UBound(aTable)'od 1,则为poctu radky tabulky 如果表(i,1)为空,则“kdyz neni prazdna” 如果aTable(i,4)=“Depo”且aTable(i,8)=“CZK”,则 aTable(i,12)=战神(i,1):i=i+1 如果结束 如果结束 接下来我 '上传vysledku na list do sloupce J 工作表(“列表1”)。范围(“A1”)。调整大小(UBound(aRes),1)。值=aRes 范围(“A1”)。选择 ActiveCell.FormulaR1C1=“KUK” 端接头
有点不对劲。它没有错误,但我认为它不会在数组中写入值。所以工作表(“列表1”)上的结果就是空的 我可以看到Excel 如果第4列和第8列中的两个条件为真,则将第12列中的值写入另一工作表 Sub-CreateTable() Dim bf作为布尔值 Dim aTable(),aRes() 暗i等于长,k等于长,n等于长 带有工作表(“DohaddeŽPOLOŽKY”)的列表,位于kde东南赫莱达的塔布尔库 i=.Cells(.Rows.Count,“A”).End(xlUp).row aTable=.Range(“A1:P”和i).Value'tabulka do pole ReDim aRes(1对i+1,1对1)“velikost磁极 以 对于i=1至UBound(aTable)'od 1,则为poctu radky tabulky 如果表(i,1)为空,则“kdyz neni prazdna” 如果aTable(i,4)=“Depo”且aTable(i,8)=“CZK”,则 aTable(i,12)=战神(i,1):i=i+1 如果结束 如果结束 接下来我 '上传vysledku na list do sloupce J 工作表(“列表1”)。范围(“A1”)。调整大小(UBound(aRes),1)。值=aRes 范围(“A1”)。选择 ActiveCell.FormulaR1C1=“KUK” 端接头,excel,loops,if-statement,vba,Excel,Loops,If Statement,Vba,有点不对劲。它没有错误,但我认为它不会在数组中写入值。所以工作表(“列表1”)上的结果就是空的 我可以看到aTable从何处获取值,但不知道aRes是如何获取值的?它的意思是从一个范围内提取它们吗?它的意思是在这一部分表(i,12)=aRes(i,1):i=i+1,但我认为它不正确。它不应该表(i,12)=aRes(i,1)be表(i,1)=aRes(i,12)?正如@Mrig所说的,我认为你的表(i,12)=aRes分配的方式不对。它应该是aRes(i,1)=aTable(i,12)。另外,您
aTable
从何处获取值,但不知道aRes
是如何获取值的?它的意思是从一个范围内提取它们吗?它的意思是在这一部分表(i,12)=aRes(i,1):i=i+1,但我认为它不正确。它不应该表(i,12)=aRes(i,1)
be表(i,1)=aRes(i,12)
?正如@Mrig所说的,我认为你的表(i,12)=aRes
分配的方式不对。它应该是aRes(i,1)=aTable(i,12)
。另外,您在一个循环中有这个值,所以您不需要i=i+1
(除非您特别想从aTable
数组中跳过其他所有值。在这种情况下,我只需使用步骤2
)我尝试了“aRes(i,1)=aTable(i,12)”,但是它仍然没有返回任何内容。我可以看到aTable
从何处获取值,但不知道aRes
如何获取值?它的意思是从一个范围内提取它们吗?它的意思是在这一部分表(i,12)=aRes(i,1):i=i+1,但我认为它不正确。它不应该表(i,12)=aRes(i,1)
be表(i,1)=aRes(i,12)
?正如@Mrig所说的,我认为你的表(i,12)=aRes
分配的方式不对。它应该是aRes(i,1)=aTable(i,12)
。另外,您在一个循环中有这个值,所以您不需要i=i+1
(除非您特别希望跳过aTable
数组中的其他所有值。在这种情况下,我只需使用步骤2
)我尝试了“aRes(i,1)=aTable(i,12)”,但它仍然没有返回任何结果。
Sub CreateTable()
Dim bf As Boolean
Dim aTable(), aRes()
Dim i As Long, k As Long, n As Long
With Worksheets("DOHADNÉ POLOŽKY") ' List s tabulkou, kde se hleda
i = .Cells(.Rows.Count, "A").End(xlUp).row
aTable = .Range("A1:P" & i).Value ' tabulka do pole
ReDim aRes(1 To i + 1, 1 To 1) ' velikost pole
End With
For i = 1 To UBound(aTable) ' od 1 do poctu radky tabulky
If aTable(i, 1) <> Empty Then ' kdyz neni prazdna
If aTable(i, 4) = "Depo" And aTable(i, 8) = "CZK" Then
aTable(i, 12) = aRes(i, 1): i = i + 1
End If
End If
Next i
' upload vysledku na list do sloupce J
Worksheets("List1").Range("A1").Resize(UBound(aRes), 1).Value = aRes
Range("A1").Select
ActiveCell.FormulaR1C1 = "KUK"
End Sub