2016-06-13 8 views
0

한 열의 값을 기반으로 한 시트의 셀을 다른 시트로 복사하고 싶습니다. 문제는 수식이 아닌 값을 복사하려고하지만 대상 명령을 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). 값) = "판매되지 않음"입니다. UCase는 단어가 ** 모든 대문자 **에 있음을 의미합니다. ''팔지 않을 것''을''팔지 말 것''으로 바꾸거나''UCase'' 래퍼를 제거하십시오. –

답변

0

먼저 내가 생각하고 생각지 못한 몇 가지 사항이나 좋은 아이디어를 지적하겠습니다.

대문자로 변환 한 다음 비교할 때마다 항상 If UCase(c.Offset(0, 1).Value) = "Not Sold"을 사용해야합니다. 당신은 If Ucase(c.Offset(0, 1).Value) = "NOT SOLD"

둘째, 당신은 내가 당신이 원하는 무엇을 믿는 대신 Integers의, VariantsiLastRow를 설정하고 싶습니다. 기술적으로 문제는 아니지만 알려지지 않은 변수는 싫습니다. 또한 뭔가를 간과하지 않는 한 i을 사용하는 것 같지 않습니다.

마지막으로, 대한, 이제 실제로 found right here on stack.

을 나는이 내가 알고있는 마지막 행을 찾는 가장 신뢰할 수있는 방법입니다

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

사용하는 것이, 정확히 마지막 행을 찾고,하기 실제 코드 자체는 여기 내 추천입니다.

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)). 값 = 범위 (_ 셀 (c.Row, 1) , 셀 (c.Row, 7)) 값 –

+0

한 줄로 계약하십시오. 값 = 범위 (셀 (c.Row, 1), 셀 (c.Row, 7)). 값'나는 여러 줄에 대해 서식을 잘못 지정했습니다. – Malil

+0

여전히 행복하지 않다 ... 포맷팅을 정렬 할 수 있는지 알게 될 것이다. –

관련 문제