2017-07-19 109 views
0

我有一个快速的问题 - 我试图从右边开始拾取距离最近的填充单元格。颠倒阵列挑选值

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

感谢

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结束,正弦代码选择第-1个单元格。

但是,问题是当我有

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

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

这将是2栏I,行6,因为2的在前,坯件(在E)。 如果我从右侧而不是左侧开始我的数组,那么会让事情变得更容易,因为我可以查看第一个填充的单元格。

+0

这段代码还有其他的东西吗?在试图遵循所写内容的目标时,如果单元格在D6:H6范围内为空(仅显示一个值),则要求单元格I6匹配,然后复制I6并粘贴该值以删除公式。您可以通过设置范围(“I6”)来放弃复制/粘贴。Formula = ...,从公式中删除引号;您还需要添加工作表应用程序修改器。这是对代码和意图的有效评估吗? – Cyril

+0

感谢commil Cryil。请参阅上文,我已澄清。 –

+0

好吧,给了你一条评论(当我测试它时,对它进行了多次编辑)......我总是使用isblank(在excel公式中工作)与使用isempty(在VBA中工作)混乱。希望这是符合法案,给你的澄清。 – Cyril

回答

1

我想从右边开始填充最近的填充单元格。

开始在最右边跳左

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

选择第6行的最后填充的单元,除非该行完全是空的,当它选择A6

+0

请您详细说明我应该如何使用它? –

+0

我看到最新情况 - 有没有办法确定计数开始的范围?因为在I6的右边没有填充的单元格,所以我不想要 –

+0

您可以使用特定的数字替换Columns.count,因此如果您想要在I6的左侧找到第一个空白单元格,则可以使用 单元格(6,9 )。结束(xltoleft)(因为我是字母表的第9个字母) 但它变得复杂。使用End模仿使用Control和光标键及其在表格中间的行为并不直观 –

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只有在空白时才被填充,这允许您跳过(以迂回的方式)终止循环。

+0

谢谢!找到了更简单的解决方案 –