2017-07-19 106 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

謝謝!找到了更簡單的解決方案 –