Excel条件跨多个表

我有一个相当复杂的Excel表。 但我需要一个简单的解决scheme..我在工作簿中有两张纸,一张包含contactdetails和一个事件(由这些公司托pipe)

// Company Sheet ╔═══════════╦══════════════╗ ║ Company ║ Contact ║ ╠═══════════╬══════════════╣ ║ Dominoes ║ John Doe ║ ╚═══════════╩══════════════╝ // Event sheet ╔═══════════╦══════════╦═══════╦═════════════╗ ║ Events ║ Company ║ Payed ║ Date ║ ╠═══════════╬══════════╬═══════╬═════════════╣ ║Pizza Party║ Dominoes ║ Yes ║ 06-07-2016 ║ ╠═══════════╬══════════╬═══════╬═════════════╣ ║Pizza Swim ║ Dominoes ║ No ║ 07-07-2016 ║ ╠═══════════╬══════════╬═══════╬═════════════╣ ║FREE PIZZA ║ Dominoes ║ No ║ 08-07-2016 ║ ╚═══════════╩══════════╩═══════╩═════════════╝ 

现在使用条件格式化,我想为公司表单着色,并将公司标记为payernot payer

该查询必须执行以下操作:

  • 循环公司的每一个事件
  • 检查公司是否支付账单
  • 如果没有到期date,公司不需要支付

所以对于这个例子Pizza Party是支付和到期date,所以这将返回FALSE

Pizza Swim活动没有支付,到期。 这将返回一个TRUE

FREE PIZZA活动没有支付,date尚未到期。 这也会返回一个FALSE

如果公司没有支付账单( TRUE ),公司将被标记为红色如果公司确实支付了账单(错误),公司将被标记为绿色

如果一个公司有多个事件,则TRUE的结果将否决所有其他付费账单( FALSE

如何做到这一点?

我已经尝试过一个函数:

=IF(Table2[Company]=A2;IF(Table2[Payed]="Ja";FALSE;IF(Table2[Date]<Today();TRUE;FALSE));TRUE)

我敢肯定有一个更聪明的方式来使用条件格式和函数来做到这一点,但我更像是一个VBA的人,所以我写了一个快速的子,应该做一些你想要的一些温和的调整

 Sub MarkNonPayers() Dim CompanySheet As Worksheet, EventSheet As Worksheet, Cell As Range, UnpayingCompany As String, FoundCell As Range Set CompanySheet = ThisWorkbook.Worksheets("Company Sheet") Set EventSheet = ThisWorkbook.Worksheets("Event Sheet") UnpayingCompany = "><" For Each Cell In EventSheet.Range(EventSheet.Cells(2,1),EventSheet.Cells(EventSheet.UsedRange.Rows.Count,1)) If EventSheet.Cells(Cell.Row,"M").Value = "No" And CDate(EventSheet.Cells(Cell.Row,"E").Value) - Date(Now) < 0 Then Set FoundCell = CompanySheet.UsedRange.Find(EventSheet.Cells(Cell.Row,"A").Value, LookAt:=xlWhole) CompanySheet.Range(CompanySheet.Cells(FoundCell.Row, "A"), CompanySheet.Cells(FoundCell.Row,"K").Interior.Color = RGB(255,0,0) UnpayingCompany = UnpayingCompany & EventSheet.Cells(Cell.Row,"A").Value & "><" End If Next Cell For Each Cell In CompanySheet.Range(CompanySheet.Cells(2,1),CompanySheet.Cells(CompanySheet.UsedRange.Rows.Count,1)) If Len(UnpayingCompany) - Len(Replace(UnpayingCompany,"<" & Cell.Value & ">", "")) = 0 AND Not IsEmpty(Cell.Value) AND Cell.Value <> "Total" Then CompanySheet.Range(CompanySheet.Cells(Cell.Row,"A"), CompanySheet.Cells(Cell.Row, "K")).Interior.Color = RGB(0,255,0) End If Next Cell End Sub 

你不只是需要像下面的东西作为条件格式规则:

 =AND(C2="No",D2<=TODAY())