Làm cách nào để kết hợp một phạm vi và một giá trị xác định trong danh sách xác nhận?


0

Tôi có một ô có danh sách thả xuống (sử dụng "Xác thực dữ liệu").

Danh sách đến từ một phạm vi được đặt tên trong bảng tính khác.

Tôi muốn thả xuống để hiển thị phạm vi được đặt tên một giá trị được xác định trước. Vì vậy, ví dụ, nếu phạm vi trông như thế này:

1
2
3
4

Tôi muốn thả xuống để hiển thị:

1
2
3
4
17 (my predefined value)

Làm thế nào để thực hiện điều đó?

Câu trả lời:


0

Nếu bạn muốn sử dụng Dữ liệu xác thực để tạo danh sách thì không thể, bạn sẽ nhận được thông báo lỗi: Bạn không được sử dụng các toán tử tham chiếu (như liên hiệp, giao điểm và phạm vi) hoặc hằng số mảng cho tiêu chí định dạng có điều kiện.

Vì vậy, tôi khuyên bạn nên cố gắng sử dụng mã như một cách giải quyết để giúp bạn giải quyết vấn đề này.

Sub SetDataValidation() '

Dim WS As Worksheet

Set WS = Worksheets("Sheet1")

Dim rng As Range

'get range of named range

Set rng = WS.Range("NUMBER")

Dim ARR As Variant

ReDim ARR(1 To 1) As Variant

'add cell value from named range to an array

For i = 1 To rng.Cells.Count

ARR(UBound(ARR)) = rng.Cells(i).Value

ReDim Preserve ARR(1 To UBound(ARR) + 1) As Variant

Next i

'add your predefined value to the array

ARR(UBound(ARR)) = 17

'set validation for B1 with the combined array

With WS.Range("B1").Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(ARR, ",")

End With

End Sub

Trong mẫu của tôi, tôi đặt tên phạm vi là SỐ và nhận kết quả:

enter image description here


0

Tôi đã có một vấn đề tương tự như của bạn. Tôi đã có một phạm vi được đặt tên Dyn_ParamList_KillDate với một danh sách các ngày 1/1/2018, 1/2/2018, etc... . Phạm vi được đặt tên động này được tạo ra bởi một quá trình và thay đổi kích thước. Vấn đề là đôi khi danh sách sẽ trống rỗng để thả xuống gây ra vấn đề.

Vì vậy, đối với giải pháp của tôi, tôi đã tạo ra một phạm vi có tên khác Range_Writeback_ModelParamDate luôn luôn có một giá trị Sau đó, tôi đã thay đổi Danh sách xác thực dữ liệu TỪ =Dyn_ParamList_KillDate ĐẾN =IF(Dyn_ParamList_KillDate<>"", Dyn_ParamList_KillDate, Range_Writeback_ModelParamDate) .

Khi tôi đã thêm phạm vi thứ hai này, đảm bảo nó luôn có giá trị và thay đổi công thức thả xuống để sử dụng IF và kéo từ một trong hai phạm vi-- Tôi bắt đầu nhận được kết quả chính xác dựa trên hai phạm vi. Tôi hi vọng điêu nay se giup được ai đo.

Ý tưởng cho giải pháp này xuất phát từ đây: https://www.mrexcel.com/forum/excel-questions/754454-you-may-not-use-reference-operators-array-constants-data-validation.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.