2016-06-13 130 views
0

我想將單元格從一個表格複製到另一個表格中,並基於一個列中的值。問題是我想複製值而不是公式,但我無法使用Destination命令來使用Pastespecial。到目前爲止,我有:Excel宏 - 根據值將單元格從一個表格複製到另一個表格

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ 
Cancel As Boolean) 

Dim i, LastRow 

LastRow = Range("A" & Rows.Count).End(xlUp).Row 

Sheets("Available").Cells.ClearContents 

For Each c In Range("A1:A" & LastRow) 

If UCase(c.Offset(0, 1).Value) = "Not Sold" Then 

Range("A" & c.Row & ":" & "G" & c.Row).Copy _ 

Destination:=Sheets("Available").Range("A" & Rows.Count) _ 

.End(xlUp).Offset(1) 

End If 

Next c 

Target.Offset(1).Select 
End Sub 

我也希望將一些細胞複製與值的單元格上面,並將其添加到複製到新的工作表行的右側。

任何幫助將非常感激。

+1

問題出在這裏'UCase(c.Offset(0,1).Value)=「Not Sold」'。 UCase暗示該詞將以**全部大寫**。將''未銷售''更改爲''不賣''或刪除'UCase'包裝。 –

回答

0

首先讓我指出一些我不認爲正在工作的東西,或者一個好主意。

使用If UCase(c.Offset(0, 1).Value) = "Not Sold"應該每次都會失敗,因爲您正在轉換爲大寫字母,然後進行比較。你想If Ucase(c.Offset(0, 1).Value) = "NOT SOLD"

其次,您要設置iLastRowVariants,而不是Integers,我相信這是你想要的。技術上不是問題,但我不喜歡未知變量。你也似乎沒有使用i,除非我忽略了一些東西。

最後,要準確地找到最後一排,我會用

lastRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).row 

這是發現的最後一排,我知道的最可靠的方法,實際上found right here on stack.

現在,對於實際的代碼本身,這裏是我的建議。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) 

    Dim i, LastRow as Integer 
    Dim ws1 As Worksheet 
    Dim ws2 As Worksheet 
    Set ws1 = ActiveSheet 
    Set ws2 = Sheets("Available") 

    i = 1 

    LastRow = ws1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

    ws2.Cells.ClearContents 

    For Each c In Range(Cells(1,2), Cells(LastRow, 2)) 
     If UCase(c.Value) = "NOT SOLD" Then 
      ws2.Range(ws2.Cells(i, 1), ws2.Cells(i, 7)).Value = ws1.Range(_ 
       ws1.Cells(c.Row, 1), ws1.Cells(c.Row, 7)).Value 
      i = i + 1 
     End If 
    Next c 

    Target.Offset(1).Select 

End Sub 
+0

感謝您的回答,但它不像以下兩行:ws2.Range(Cells(i,1),Cells(i,7))。Value = Range(_ Cells(c.Row,1) ,Cells(c.Row,7))。Value –

+0

將它們合併成一行。 'ws2.Range(Cells(i,1),Cells(i,7))。Value = Range(Cells(c.Row,1),Cells(c.Row,7))。格式錯誤的多行。 – Malil

+0

仍然不開心......我會看看我是否可以對格式進行排序。 –

相關問題