Vba 循环以识别数据中的对
我有一个问题: 因为我在这里处理职位,所以每个职位都是成对的。我想循环遍历整个列表,并计算每个位置对中的值差(因此我想找到损失或增益),然后将其返回到另一个单元格。此处,第一个位置对之间的差值为14688,以下为另一个位置对。在这里一些很棒的人的帮助下,我使用了Vba 循环以识别数据中的对,vba,excel,Vba,Excel,我有一个问题: 因为我在这里处理职位,所以每个职位都是成对的。我想循环遍历整个列表,并计算每个位置对中的值差(因此我想找到损失或增益),然后将其返回到另一个单元格。此处,第一个位置对之间的差值为14688,以下为另一个位置对。在这里一些很棒的人的帮助下,我使用了区域属性,因为我的数据结构是由空单元格分隔的非空单元格。但是,我需要一个代码,该代码考虑到具有如下连续非空单元格的数据,并且仍然将它们配对 第一个位置在第63行 Sub main() Dim iPair As Long
区域
属性,因为我的数据结构是由空单元格分隔的非空单元格。但是,我需要一个代码,该代码考虑到具有如下连续非空单元格的数据,并且仍然将它们配对
第一个位置在第63行
Sub main()
Dim iPair As Long
Dim pairDiff As Variant
pairDiff = 1
With Worksheets("System 1")
With .range("T39", .Cells(.Rows.Count, "T").End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers) '<--| loop through column "T" cells containing numbers from row 63 down to last not empty one
iPair = 1 '<--| initialize "pair" counter
Do While iPair < .Areas.Count '<--| loop through "pairs"
pairDiff = .Areas(iPair + 1).Offset(, 1) + .Areas(iPair).Offset(, 1)
.Areas(iPair + 1).Offset(, IIf(pairDiff < 0, 7, 8)) = pairDiff '<--| write "pair" difference in corresponding column "V" (if loss) or "W" (if gain)
iPair = iPair + 2 '<--| update "pair" counter by adding two not to mix "pairs"
Loop
End With
End With
End Sub
Sub-main()
暗淡的iPair就像长的一样
作为变体的Dim-pairDiff
pairDiff=1
带工作表(“系统1”)
使用.range(“T39“,.Cells(.Rows.Count,“T”).End(xlUp)).SpecialCells(xlCellTypeConstants,xlNumbers)区域仍然很有用,只是您还需要在每个区域中循环
选项显式
Sub main()
Dim ielem As Long
Dim pair1stValue As Double, pairDiff As Double
Dim area As Range, cell As Range
With Worksheets("lossgain") '<-- change "losspair" to your actual worksheet name
With .Range("T63", .Cells(.Rows.Count, "T").End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers) '<--| loop through column "T" cells containing numbers from row 63 down to last not empty one
For Each area In .Areas
For Each cell In area.Cells
ielem = ielem + 1
If Int(ielem / 2) * 2 = ielem Then
pairDiff = cell.Offset(, 1) - pair1stValue '<--| calculate the "pair" difference from corresponding column "U" values
cell.Offset(, IIf(pairDiff < 0, 2, 3)) = pairDiff '<--| write "pair" difference in corresponding column "V" (if loss) or "W" (if gain)
Else
pair1stValue = cell.Offset(, 1)
End If
Next
Next
End With
End With
End Sub
Sub-main()
像这样长
Dim pair1stValue为双精度,pairDiff为双精度
变暗区域作为范围,单元格作为范围
“你有没有试过什么?”?我问这个问题是因为你发布的代码是对你之前的一个问题的回答……你能扩展一下你的例子吗?也许通过向我们展示代码运行之前和之后您希望看到的内容?@Rcaetano嗨,我不知道如何执行此操作,因为我是VBA新手,所以我只手动移动单元格,抱歉。可能是重复的