2

我使用 SQL Server 2012 数据库。

每天早上我都会得到一张带有计算结果的新表格。格式为

productID - countryID - 2001 - 2002 - 2003

我有 2000 种产品,每种产品在 200 个国家/地区销售。大约 400000 行。

我也有与之前计算相同格式的表格。

我的任务是比较新旧结果并创建一个输出 Excel 文件,其格式为:

计算 - productID - countryID - 2001 - 2002 - 2003

旧 - 1 - CA - 0.02 - 0.89 - 5.3

新 - 1 - CA - 0.03 - 0.90 - 5.3

所以我按产品和国家分组,并比较每年的价值。

我的问题是我需要突出显示结果差异超过 2% 的那些单元格。

有人知道怎么做吗??

多谢。

4

4 回答 4

1

假设每一行前面都有旧行,您需要选择新行,并与它们正上方的结果进行比较。最简单的方法是添加过滤器,过滤新的,选择结果,添加条件格式,然后取消过滤结果。

'Select everything and add a filter
Cells.Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$10").AutoFilter Field:=1, Criteria1:="New"
'Select the newly filtered results
Cells.Select
'Apply a conditional format (substitute B2 for the first filtered cell, and B1 for the cell above it)
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=IF(B2>(B1*1.2),TRUE,FALSE)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
     .PatternColorIndex = xlAutomatic
     .ThemeColor = xlThemeColorLight2
     .TintAndShade = 0.799981688894314
End With
Selection.FormatConditions(1).StopIfTrue = False
'Remove the filter
Cells.Select
Selection.AutoFilter

创建一个新宏,并将上面的代码粘贴到其中,它应该可以工作。

于 2013-11-04T16:33:26.727 回答
0

您可以使用 Excel 公式处理此问题:

A           B       C

old         0.5 
new         1       Alert !
old         0.9 
new         0.91    
old         0.1 
new         0.15    Alert !

=IF(A2="new";IF(B2-B1>0.02;"Alert !";"");"")

要突出显示单元格,您可以使用此公式的条件格式(从菜单格式)

于 2013-11-04T16:16:23.007 回答
0

我会走数据透视表路线。它是动态的。如果添加新信息,可轻松扩展。并且不依赖于您的数据按照您需要的确切顺序。它还可以包含条件格式,这些格式会随着您的数据而扩展。

于 2013-11-04T17:29:22.347 回答
0

子运行检查()

Dim eilute As Integer

ActiveSheet.Range("A2").Select
Selection.End(xlDown).Select

eilute = Selection.Cells.Row

For e = 2 To eilute

   For s = 8 To 72
     If Cells(e, s) <> Cells(e + 1, s) Then
     Cells(e, s).Interior.Color = RGB(217, 217, 25)
     Cells(e + 1, s).Interior.Color = RGB(217, 217, 25)
     End If
     Next s
     e = e + 1
     Next e

结束子

于 2013-11-05T09:30:01.290 回答