두 장의 데이터를 결합하고 원산지를 기준으로 행의 조건부 서식을 지정하는 방법


1

Excel "열기", "새로 만들기", "결합"

    "Open" Sheet (Old list)

    Ticket ID  |  Priority |  Department  |  Status 
    36009      |     1     |   Finance    |  01-Open
    34781      |     2     |   Finance    |  02-Vendor
    35776      |     1     |   Finance    |  01-Open

    "New" Sheet (New List)
    Ticket ID  |  Priority |  Department  |  Status 
    34781      |     3     |   Finance    |  01-Vendor
    35776      |     5     |   Finance    |  10-Closed
    35607      |     2     |   Finance    |  01-Open    

    "Combine" Sheet (End Result)
    Ticket ID  |  Priority |  Department  |  Status 
    36009      |     1     |   Finance    |  01-Open
    34781      |     3     |   Finance    |  01-Vendor
    35776      |     5     |   Finance    |  10-Closed
    35607      |     2     |   Finance    |  01-Open    

그래서 내가하려고하는 것은 결합 시트에 열린 시트와 새 시트를 결합하는 것입니다. 새 시트는 열린 시트 위에 우선 순위가 있습니다. 우리 3 가지 결과가 나옵니다.

  1. 공개 및 신규 모두에있는 티켓 인 결과 중복. 중복으로 나는 단지 "New"(노란색 배경으로 표시)에서 결과를 얻습니다.

  2. "New"시트가 아닌 Open에만있는 티켓 인 오래된 결과 (빨간색 배경으로 표시)

  3. 새로운 결과는 New in Open (녹색 배경으로 표시)에만있는 티켓입니다.

그래서 티켓 ID의 모든 체크를 위해 전체 행을 복사하고 싶습니다.

예를 들어,이 함수를 사용하여 Duplicates 및 New 값 (New sheet에서 Open sheet 값으로)을 찾습니다.

=IF(ISERROR(VLOOKUP(New!B2;Open!$B$2:$B$998;1;FALSE));IF(New!B2=0;"Empty";"NEW");"Duplicate")

콤보 시트를 원하는대로 (예 : 자동 채우기와 같이) 쉽게 만들 수 있습니까?


질문은 어디에 있습니까?
DavidPostill

와우, 나는 질문을 할 때 완전히 잊어 버렸다. 질문은 어떻게 내가 콤보 시트를 자동으로 채우는 것과 같은 방식으로 쉽게 만들 수 있는가? 나는 공식만으로 상태를 확인할 수있다.
Beer

부디 편집하다 귀하의 질문에이 정보를 추가하십시오 ...
DavidPostill

왜 그 순서대로 합쳐 졌습니까? 아니면 질서가 중요하지 않습니까? 이것은 VBa에서 아주 쉽게 할 수 있지만 worksheet-function을 지정 했으므로 옵션이 아닌 것 같습니다.
Dave

VBA는 옵션이지만 기능을 선호하지만 VBA를 이해하지만 사람들과 함께 일하는 것은 아닙니다. 나는 그들을 위해 노력합니다.
Beer

답변:


0

다른 사람들이 말했듯이, 나는 이것이 엑셀 기능으로는 가능하지 않다고 생각합니다. 그렇더라도 천천히 진행됩니다. VBA 매크로를 실행하는 것이 훨씬 빠릅니다. 나는 당신을 도울 수있는 표본을 썼다. 그것은 당신이 찾고있는 것을 어느 정도 수행해야합니다 :

Public Sub do_all_the_things()

Dim i As Integer
Dim j As Integer
Dim color As String
i = 1

 Do Until i = Range("'Open'!A1").End(xlDown).Row + 1
  j = 1
  color = "green"

  Do Until j = Range("'New'!A1").End(xlToRight).Column + 1
   If Range("'New'!A" & j).Value = Range("'Open'!A" & j).Value Then
    color = "yellow"
   Exit Do
   End If

   If color = "green" Then
    Do Until j = Range("'Combined'!A1").End(xlToRight).Column + 1
     If Range("'Combined'!A" & j).Value = Range("'Open'!A" & j).Value Then
      color = "red"
      Exit Do
     End If

     j = j + 1
   Loop

   End If

'at this point we know what color the row is
  row_on = Range("'Combined'!A1").End(xlDown).Row + 1

  Range("'Combined'!" & row_on & ":" & row_on).Value = Range("'New'!" & i & ":" & i).Value

  If color = "red" Then
   Range("'Combined'!" & row_on & ":" & row_on).Interior = 255 'red
  End If

  If color = "yellow" Then
   Range("'Combined'!" & row_on & ":" & row_on).Interior = 65535 'yellow
  End If

  If color = "red" Then
   Range("'Combined'!" & row_on & ":" & row_on).Interior.ThemeColor = xlThemeColorAccent6 'green
  End If

  i = i + 1
 Loop




End Sub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.