태그 보관물: data-validation

data-validation

데이터 유효성 검사 드롭 다운에 대해 다른 시트에서 인접하지 않은 셀을 사용하고 공백이 아닌 값만 표시하려면 어떻게해야합니까? 다른 시트의 셀에서 데이터 유효성

한 시트에 인접하지 않은 몇 개의 셀이 있는데 다른 시트의 셀에서 데이터 유효성 검사 소스로 사용하려고합니다. 그러나 데이터 유효성 검사에서 기본적으로 이것을 허용하지 않는 것 같습니다.

그래서 첫 번째 시트에서 원하는 값을 참조하는 다른 시트의 인접한 셀에 수식을 넣는 해결 방법을 시도했습니다. 그런 다음 두 번째 범위의 이름을 지정하고 데이터 유효성 검사 소스 필드에서 해당 이름을 참조했습니다.

이제 첫 번째 시트의 셀 중 하나가 비어 있으면 첫 번째 시트의 빈을 참조하는 두 번째 시트의 셀이 비어있는 0대신 표시 되는 문제가 있습니다. 나는 이와 같은 일을 함으로써이 문제를 해결하려고 노력했다 =IF(Sheet1!A1="","",Sheet1!A1). 그러나 이것이 실제로 수식 결과를 빈 셀과 동일하게 만드는 것은 아닙니다 .

데이터 유효성 검사에 셀 내 드롭 다운을 포함시키려는 경우 대부분 문제가됩니다. 여기에서 내가 선택한 사항 0은 소스 데이터에 공백이있는 경우 드롭 다운에 빈 줄 이있는 것으로 보입니다 . 공백이 실제 공백 인 경우에는 발생하지 않습니다.

따라서이 문제를 해결할 수있는 방법이 있습니까?


예:

Sheet1

A1 = Value1
A5 = Value2
A9 = Value3
A13 = Value4
A17 = (셀이 비어 있음)
A21 = (셀이 비어 있음)

Sheet2

A1 =Sheet1!A1(반환 Value1)
A2 =Sheet1!A5(반환 Value2)
A3 =Sheet1!A9(반환 Value3)
A4 =Sheet1!A13(반환 Value4)
A5 =Sheet1!A17(반환 0)
A6 =IF(Sheet1!A21="","",Sheet1!A21)(공백으로 표시)

Sheet2!A1:A6이름이 Validation입니다. 에서 Sheet3!A1데이터 유효성 검사는 소스 =Validation및 셀 내 드롭 다운과 함께 적용 됩니다. 셀 내 드롭 다운에 다음이 표시됩니다.

값 1
값 2
VALUE3
VALUE4
0

(빈셀 포함)

이러한 조건에서 필자 Sheet3!A1는 채워진 Sheet2!A1:A4상태에서도 Sheet2!A5:A6사용 가능한 상태를 유지하면서 표시 되는 드롭 다운을 초래하는 구성을 찾고 있습니다. 또는 드롭 다운 Sheet3!A1이 표시되는 Sheet1!A1,Sheet1!A5,Sheet1!A9,Sheet1!A13동시에 Sheet1!A17,Sheet1!A21채워진 상태에서도 계속 사용할 수 있어야합니다.

방법 중 하나가 필요한 것 같습니다.

  • 직접에 인접하지 않은 세포를 해결 Sheet1내 데이터 유효성 검사 소스에서,
    또는
  • 의 세포를 얻기 Validation에 범위 Sheet2실제로는 그들의 표적이 때 빈 셀을 반환 Sheet1비어 있습니다.


답변

원본 게시물에 설명 된 방법 사용 데이터 유효성 검사 드롭 다운을 만들려면 공백을 제외하십시오 .

이것을 다음 방법과 결합하십시오.

Public Sub ClearDataValidation(destrng As Range)
   destrng.Validation.Delete
End Sub

Public Sub LoadDataValidation(srcrng As Range, destrng As Range)
   'Verify a 1x1 sized Range was passed
   If destrng.Rows.Count <> 1 Or destrng.Columns.Count <> 1 Then
      InvalidValue destrng.Worksheet, "LoadDataValidation", _
            "Range: " & destrng.name & " was passed to method. This method expects a " & vbCrLf & vbCrLf & _
            " 1 Row x 1 Column Range to be passed.  Anything outside of the 1x1 " & vbCrLf & vbCrLf & _
            "size will result in invalid conditions"
      Exit Sub
   End If

   With Range(destrng.Address).Validation
      .Delete
      .Add xlValidateList, xlValidAlertStop, xlBetween, DistinctValues(srcrng)
   End With
End Sub

용법:

LoadDataValidation Range("Table1[column1]"), Range("destinationCell")

답변