2014-10-22 1 views
0

Excel에서 인벤토리를 추적 할 위치를 추적하고 수량을 입력하고 버튼을 클릭하여 인벤토리에 입력하십시오.Excel VBA 지원하시기 바랍니다. Sheet1의 값을 Sheet2의 일치하는 셀로 복사하십시오.

Sheet1은 UPC, 상자 ID 및 해당 UPC의 수량을 입력하는 곳입니다. Sheet2는 이미 사용 가능한 모든 상자 ID로 열 제목과 사용 가능한 모든 UPC로 레이블 된 행으로 미리 채워집니다. 이제해야 할 일은 Sheet1의 수량 값을 상자 ID 및 UPC 일치 셀로 복사하는 것입니다. COLUMN_ID이 BOX_ID 및 ROW_ID 실제 스프레드 시트의 UPC 될 것입니다 될 것

screenshot

참고 : 여기에

무슨 뜻인지의 스크린 샷의 예이다. You can download the example spreadsheet here.

제가 직면 한 유일한 문제는 VBA가 Sheet1에서 UPC를 Sheet2로 복사하는 것과 관련이 있습니다. 어떤 아이디어?

EDIT [ SOLVED] :

Sub copyFindPaste() 
    ' hiker95, 10/22/2014, ME813408 
    Dim wSheet1 As Worksheet, wSheet2 As Worksheet 
    Dim foundRow As Range, foundCol As Range 
    Application.ScreenUpdating = False 
    Set wSheet1 = Sheets("Sheet1") 
    Set wSheet2 = Sheets("Sheet2") 
    With wSheet1 
     Set foundRow = wSheet2.Columns(1).Find(.Range("B2").Value, LookAt:=xlWhole) 
     Set foundCol = wSheet2.Rows(1).Find(Range("A2").Value, LookAt:=xlWhole) 
     If (Not foundRow Is Nothing) * (Not foundCol Is Nothing) Then 
     With wSheet2.Cells(foundRow.Row, foundCol.Column) 
      .Value = Range("C2").Value 
      .HorizontalAlignment = xlCenter 
     End With 
     Set foundRow = Nothing: Set foundCol = Nothing 
     End If 
    End With 
    Application.ScreenUpdating = True 
End Sub 
+0

행/열 헤더를 찾고 수량을 배치 할 올바른 셀을 식별하려면 Match() 또는 Find()를 사용하십시오. 그런 다음 문제가 생기면 코드 *로 다시 게시하십시오. –

+0

글쎄, 내가 처음 만났던 문제는 VBA에서 코딩하는 법을 알지 못했기 때문에 대신 의사 코드를 사용했다. Excel에서 실행할 수 없습니까? – ScrapeHeap

+0

오브젝트 변수에 값을 할당 할 때는'Set'을 사용해야합니다. 내 대답을 보라. –

답변

0

안된 당신은`사용할 수 있습니다

Sub copyAndFind() 
    Dim copyFrom As Worksheet, copyTo As Worksheet 
    Dim copyValue As Integer 
    Dim matchColId As Text 
    Dim matchRowId As Text 
    Dim fC As Range, fR as range 

    Set copyFrom = ThisWorkbook.Sheets("Sheet1") 
    Set copyTo = ThisWorkbook.Sheets("Sheet2") 
    Set matchColId = Cell("A2").Value 
    Set matchRowId = Cell("B2").Value 
    Set copyValue = Cell("C2").Value 

    Set fC = copyTo.Rows(1).find(What:=matchColId, lookAt:=xlWhole) 
    Set fR = copyTo.Columns(1).find(What:=matchRowId, lookAt:=xlWhole) 

    If Not fC is nothing and not fR is nothing then 
     copyTo.cells(fC.Column, fR.Row).Value = copyValue 
    else 
     Msgbox "Couldn't match Row and/or Column header!" 
    end if 

End Sub 
+0

제 편집을보고 코드의 문제점을 볼 수 있습니까? "foundC = wsSheet2.Rows (1) .Find (What : = matchRow, lookAt : = xlWhole)"오류가 있습니다. 감사! – ScrapeHeap

0

당신이하는 단지 사본 1에서 콘텐츠를 시도 할 수 있습니다 2.

Dim r As Range 
Set r = Sheets("Sheet1").Range("A2") 

With Sheets("Sheet2") 
    Dim tCol As Long, trow As Long 
    tCol = .Range("1:1").Find(r.Value).Row 
    tRow = .Range("A:A").Find(r.Offset(0, 1).Value).Row 
    .Cells(tRow, tCol) = r.Offset(0, 2) 
End With