2016-06-13 128 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

仍然不开心......我会看看我是否可以对格式进行排序。 –

相关问题