2014-04-16 2 views
1

인벤토리 검색 프로세스를 약간 단순화하려고합니다. 들어오는 발송물을 스캔합니다. 스캐너는 'XYZ123'과 같은 문자열을 Excel로 전송합니다. 내가하려는 것은 사용자가 열을 수동으로 선택하는 대신 스캔 된 문자열을 각 열로 보내고 싶습니다. 예를 들어 , 'XYZ' Excel VBA 인벤토리 정렬

  • Item로 시작과 'ABC'
  • SN과 함께 시작됩니다에

    • PO'SN'가 시작됩니다 우리가 3 가능한 열 'PO', 'Item'가 가정 해 봅시다 'LMN'

    스캔 한 값이 'ABC'으로 시작하면, 'Item' 열로 보내야합니다.

    이것이 가능합니까? 나는 Search, Exact 그리고 다른 몇몇 공식들로 놀아 보았는데, 지금까지 아무 일도하지 않았다.

    당신은 수식이 작업을 수행하지 못할

  • +0

    , 감사 - 당신이 VBA를 사용해야합니다. 'Worksheet_Change' 이벤트 핸들러를 사용하여 스캔 된 값을 확인하고이를 필요한 위치에 복사 할 수 있습니다. –

    +1

    의도 한대로 Excel이 라이브 업데이트 유형 시스템으로 사용되는 것을 볼 수 없습니다. 나는 과거에 Worksheet_Change 솔루션을 만들었고 새로운 사용자 나 매크로가 활성화되지 않아 시간이 지남에 따라 유지 보수 문제를 야기 할 수 있습니다. 작업이 끝날 때이를 모두 한 열로 스캔하여 분리 할 수 ​​있습니까? LEFT (A1,3) = "ABC", "SN", "ABC"등의 IF (LEFT (A1,3) = "XYZ", "PO" ")'로 그룹화하십시오. – dmaruca

    +0

    스캐너가 문자열을 Excel로 보내는 방법은 무엇입니까? 해당 단계의 문자열을 분석 한 다음 거기에서 적절한 열로 보내야 할 수도 있습니다. – tmoore82

    답변

    0
    Sub test_inventory_sorting() 
        Dim v_arr(1 To 3) As String, v As Variant 
        v_arr(1) = "XYZ1234" 
        v_arr(2) = "LMN73456" 
        v_arr(3) = "ABCzxcv" 
    
        For Each v In v_arr 
        Debug.Print v; " goes to "; get_col(CStr(v)) 
        Next v 
    End Sub 
    Function get_col(ByVal p_val As String) As String 
        If p_val Like "ABC*" Then 
        get_col = "SN" 
        ElseIf p_val Like "LMN*" Then 
        get_col = "Item" 
        ElseIf p_val Like "XYZ*" Then 
        get_col = "PO" 
        Else 
        get_col = "Invalid" 
        End If 
    End Function