反转数组以选择值

时间:2017-07-19 14:14:22

标签: arrays vba excel-vba excel-formula excel

我有一个简单的问题 - 我正试图从右边开始拾取最近的填充单元格。

我尝试从左边开始做,但问题在于有一个空白单元格,它不会继续并在它之前停止。有人可以帮忙吗?

由于

    Range("I6").Select
Selection.FormulaArray = "=INDEX(D6:H6,(MATCH(TRUE,ISBLANK(D6:H6),0))-1)"
Range("I6").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

编辑。

实质上。如果我在D6中有1,在E6中有2,在E6中有3。我将以I6结束w,正则代码选择第-1个单元格。

然而,问题是当我有

D | E | F | G | H |我|

1 --- 2 ------- ------- 3 2

它在第一列第2行中为2,因为2在空白之前(在E中)。 如果我从右侧而不是从左侧开始我的阵列 - 这将使事情变得更容易,因为我可以看到第一个填充的单元格。

2 个答案:

答案 0 :(得分:1)

我正在尝试从右边开始拾取最近的填充单元格。

从最右边开始向左跳

 cells(6,columns.count).end(xltoleft).select

选择第6行中的最后一个填充单元格,除非该行在选择A6

时完全为空

答案 1 :(得分:0)

在阅读问题的更新时,我认为您可以执行以下操作,在第一个空格之前告诉您RC [-1]的值:

Sub test()
Dim i As Integer

For i = 4 To 8 Step 1 'Calling out the Step in case you want to go from the right and say Step -1

If ISEMPTY(Cells(6, i)) Then

If ISEMPTY(Cells(6, 9)) Then

    Cells(6, 9).Value = Cells(6, i - 1).Value
    Else
    End If

Else
End If

Next i
End Sub

如果您想要的话,请告诉我。这假设I6是空白的,只有当有空白时才填充I6,这允许你跳到(以迂回的方式)终止循环。