Tôi đang hoạt động trên 2 Bảng.
"Bảng 1" là danh sách các tài liệu hiện tại mà tôi nhập và muốn giữ nguyên. Các tập tin không được định dạng theo bất kỳ cách nào.
Bảng 2 là danh sách khách hàng mà tôi hoạt động và là bảng excel.
Bây giờ, điều tôi đang cố gắng làm là tạo một công thức trong Bảng 2, cho mỗi khách hàng sẽ tra cứu các hóa đơn của mình trong Bảng 1 và chọn một hóa đơn gần nhất với ngày đáo hạn tương ứng của họ (hoặc nói cách khác, hóa đơn đáo hạn ngày gần nhất với ngày hôm nay).
Những gì tôi đã cố gắng là:
Column F - Due dates
Column A - Customer number
Column C - Document type
{=MIN(IF([Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY();[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Điều đó cho tôi ngày gần nhất nói chung là một ngày, nhưng nó được lấy từ tất cả các tài liệu từ tất cả các khách hàng, không thỏa đáng.
Tôi đã cố gắng thêm một điều kiện thứ hai muốn chỉ lọc các hóa đơn
{=MIN(IF(AND([Documents.XLSX]Sheet1!$C$2:$C$30000="INVOICE";[Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY());[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Hơn mọi thứ bắt đầu trở nên đáng tiếc.
Tất nhiên tôi cũng có thể đưa ra điều kiện thứ ba với số lượng khách hàng, nhưng điều đó vẫn không hiệu quả.
{=MIN(IF(AND([Documents.XLSX]Sheet1!$C$2:$C$30000="INVOICE";[Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY();[Documents.XLSX]Sheet1!$F$2:$F$30000=[@CustomerNumber]);[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Tôi cũng đã cố gắng làm việc xung quanh với một chức năng trong hình dạng của một cái gì đó giống như thế này:
=INDEX(AD3:AD9;MATCH(1;INDEX((AG3=AA3:AA9)*(AG4=AB3:AB9)*(AG5=AC3:AC9);0;1);0))
Trong đó AD là giá trị AG là đầu vào, AA AB và AC là các mảng khác nhau cho các điều kiện (như loại tài liệu, tên khách hàng, v.v.) Miễn là hai điều kiện đầu tiên có thể giống như AG3 và AG4, tôi cho rằng điều kiện cuối cùng phải được xây dựng khác nhau theo cách mà phạm vi dữ liệu đầu vào cũng là phạm vi cho đầu ra.
Mẫu vật: https://i.stack.imgur.com/S8HCs.png
Bây giờ trong ví dụ này, công thức cho Bob sẽ trả về giá trị 30.10.2018 vì đây là hóa đơn gần nhất của ngày hôm nay. Trong khi đối với John thì không nên trả lại bất cứ điều gì, vì hóa đơn của anh đã quá hạn.
EDIT: Cuối cùng, tôi đã tự mình tìm ra nó. Đăng công thức kết quả cho bất cứ ai có thể vấp phải chủ đề này trong tương lai:
{=MIN(IF(([Documents.XLSX]Sheet1!$C$2:$C$30000="Invoice")*([Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY())*(TEXT([@Customer];0)=[Documents.XLSX]Sheet1!$A$2:$A$30000);[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Đây là một công thức mảng nên dĩ nhiên ctrl + shift + enter
Tuy nhiên, nếu bất cứ ai có ý tưởng làm thế nào để có được kết quả tương tự với kết hợp khớp chỉ mục, tôi sẽ rất vui khi tìm hiểu.