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 ║ ╚═══════════╩══════════╩═══════╩═════════════╝
现在使用条件格式化,我想为公司表单着色,并将公司标记为payer
或not 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())