>source

각 구성은 하나의 완전한 장치를 구성하는 다른 부품 번호로 설정됩니다. 가장 많이 팔리는 조합을 나타내기 위해 각 전체 구성 중 몇 개를 판매했는지 알고 싶습니다. 구성 번호는 제품의 옵션과 관련이 있습니다. 예를 들어 12345-W는 무선을 의미합니다.

각 구성 문자열 중 몇 개를 계산해야 하는지 알아내야 합니다. 여기에는 구성을 찾는 데 도움이 되는 몇 가지 열이 있습니다. 라인 번호와 판매 번호를 보고 판매 주문에서 동일한 그룹화에 있는지 확인할 수 있습니다. 예를 들어 완제품을 구성하는 하나의 전체 구성은 완제품과 관련된 모든 부품에 대해 번호 1을 가지며 판매 주문은 숫자로 내려갑니다. 이것을 판매 주문과 함께 사용하여 구성 문자열을 생성할 수 있습니다. 그런 다음 구성 열과 부품 열을 보고 기본 구성을 옵션과 구별할 수 있습니다. 구성 열의 "C"는 기본 모델임을 알려주고 "X"는 옵션임을 알려줍니다.

이 정보를 사용하여 아래에 링크된 사진과 같이 파란색/보라색 열에 수동 예제로 표시된 구성 문자열을 만들어야 합니다. 문자열이 있으면 이중 계산을 피하기 위해 "C" 구성 옵션만 계산하면 피벗 테이블을 만들어 동일한 옵션의 중복 항목이 몇 개인지 알려주고 C만 필터링할 수 있습니다. 이들은 여러 개의 서로 다른 제품과 서로 다른 여러 제품의 서로 다른 구성입니다.

설정은 다음과 같습니다. 데이터 예 -파란색 열은 필요한 항목의 수동 예입니다.

내가 가진 몇 가지 생각은 If, then 문, 연결 IF 또는 매크로였습니다. 그러나 지금까지 아무 것도 해결되지 않았습니다. 어떤 조언이라도 대단히 감사하겠습니다!

  • 답변 # 1

    이렇게 하려면 데이터가 다음과 같은 방식으로 정렬되어 있는지 확인해야 합니다.

    1. 판매
    2. 줄넘기
    3. 구성
    4. 부품

    한 번에 4개의 열을 모두 이 순서로 정렬해야 합니다. 그렇지 않으면 데이터가 엉망이 될 수 있습니다!

    또한 옵션 번호에는 항상 해당 기본 번호와 대시가 접두어로 붙는다고 가정합니다.

    그런 다음 필요한 열을 배열로 읽습니다(더 빠른 처리를 위해). 해당 데이터를 한 줄씩 반복합니다. 우리가 찾을 때구성에서 해당 행 번호를 기억합니다(비교를 위해NS옵션 및 출력 작성용). 다음 행으로 이동하여 옵션인지, 그리고 기억된 기본 구성에 속하는지 확인합니다. 그렇다면 기본 구성에 옵션 부품 번호를 추가합니다.

    결국 우리는 배열 데이터를 다시 셀에 씁니다.

    Option Explicit
    Public Sub GetFullConfigFromOptions()
        Dim ws As Worksheet  ' define your sheet here
        Set ws= ThisWorkbook.Worksheets("Sheet1")
        Dim LastRow As Long
        LastRow= ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
        ' read data columns into array
        Dim ArrSalesNo() As Variant   'define Sales column
        ArrSalesNo= ws.Range("A1").Resize(RowSize:=LastRow).Value
        Dim ArrConfig() As Variant   'define Config column
        ArrConfig= ws.Range("B1").Resize(RowSize:=LastRow).Value
        Dim ArrPartNo() As Variant   'define Part column
        ArrPartNo= ws.Range("C1").Resize(RowSize:=LastRow).Value
        Dim ArrLineNo() As Variant   'define Linenum column
        ArrLineNo= ws.Range("E1").Resize(RowSize:=LastRow).Value
        ' create output array
        Dim ArrOut() As Variant   'define String column
        ArrOut= ws.Range("D1").Resize(RowSize:=LastRow).Value
        Dim CurrentConfigRow As Long
        Dim iRow As Long
        For iRow= 2 To LastRow
            If ArrConfig(iRow, 1)= "C" Then
                ' is config line …
                CurrentConfigRow= iRow  ' remember line number for output
                If iRow= LastRow Then
                    ' base without options (in last row)
                    ArrOut(CurrentConfigRow, 1)= ArrPartNo(CurrentConfigRow, 1) ' write base part number to output (without dash)
                ElseIf Not ArrSalesNo(CurrentConfigRow + 1, 1)= ArrSalesNo(CurrentConfigRow, 1) Or _
                       Not ArrLineNo(CurrentConfigRow + 1, 1)= ArrLineNo(CurrentConfigRow, 1) Or _
                       Not ArrConfig(CurrentConfigRow + 1, 1)= "X" Then
                    ' base without options
                    ArrOut(CurrentConfigRow, 1)= ArrPartNo(CurrentConfigRow, 1) ' write base part number to output (without dash)
                Else
                    ' base with options
                    ArrOut(CurrentConfigRow, 1)= ArrPartNo(CurrentConfigRow, 1) &
     "-" ' write base part number to output  (including dash)
                End If
            Else
                ' check if it is an option line of the remebered config line
                If ArrSalesNo(iRow, 1)= ArrSalesNo(CurrentConfigRow, 1) And _
                   ArrLineNo(iRow, 1)= ArrLineNo(CurrentConfigRow, 1) And _
                   ArrConfig(iRow, 1)= "X" Then
                    ' is option line (so append to output)
                    ArrOut(CurrentConfigRow, 1)= ArrOut(CurrentConfigRow, 1) &
     Mid$(ArrPartNo(iRow, 1), Len(ArrPartNo(CurrentConfigRow, 1)) + 2)
                End If
            End If
        Next iRow
        ' write ouput to cells
        ws.Range("D1").Resize(RowSize:=LastRow).Value= ArrOut
    End Sub
    

    출력은 다음과 같습니다.

  • 이전 reactjs : 입력 필드 및 기타 아이콘 /버튼에 FilterFunction 추가
  • 다음 Excel 형식 불일치로 Word 테이블 가져오기