如果在Sheet2上匹配,则在Sheet1上突出显示值

时间:2016-04-28 16:01:25

标签: excel vba excel-vba

如果匹配sheet2中的值,我正在寻找一种突出显示sheet1中单元格的方法。这是我的代码,没有任何错误,但它什么也没做。基本上我认为Do while循环遍历所有记录,直到它达到空白然后它将读取我的偏移量选择的单元格值并将其与下一个单元格值进行比较,同时保持在同一行,如果匹配它会在表1中突出显示,但如果没有,它会继续前进。让我知道我离开这里有多少,因为我没有太多的VBA知识。谢谢。

$redis = new Redis();
$redis->connect('/tmp/redis.sock');

$sql = "SELECT something FROM sometable WHERE condition";
$sql_hash = md5($sql);
$redis_key = "dbcache:${sql_hash}";
$ttl = 3600; // values expire in 1 hour

if ($result = $redis->get($redis_key)) {
  $result = json_decode($result, true);
} else {
  $result = Db::fetchArray($sql);
  $redis->setex($redis_key, $ttl, json_encode($result));
}

2 个答案:

答案 0 :(得分:0)

您的代码基本上是正确的,但我认为您在引用正确的单元格方面遇到了麻烦。一个好的调试技术是在代码中添加.Cells.Interior.ColorIndex = 4或类似内容,以便直观地看到您是否引用了正确的单元格。您还可以将" F5"," F8"和断点用于弄清楚哪些是错误的。如果您从未使用过这些内容,请参阅http://www.excel-easy.com/vba/examples/debugging.html

例如:

Do While resource.Offset(i, 3) <> ""  '<--Insert a breakpoint on this line,
                                      'then press "F8" to make sure the
                                      'code inside your Do While loop is
                                      'being executed

    resource.Offset(i, 3).Cells.Interior.ColorIndex = 4
    register.Range("A2").Cells.Interior.ColorIndex = 6

    If resource.Offset(i, 3).Value = register.Range("A2").Value Then

        resource.Offset(i, 3).Cells.Interior.ColorIndex = 40

    End If

    i = i + 1

Loop

答案 1 :(得分:0)

也许就像这样简单。 。 。 。

Sub Compare2Shts()
For Each Cell In Worksheets("CompareSheet#1").UsedRange
If Cell.Value <> Worksheets("CompareSheet#2").Range(Cell.Address) Then
Cell.Interior.ColorIndex = 3
End If
Next

For Each Cell In Worksheets("CompareSheet#2").UsedRange
If Cell.Value <> Worksheets("CompareSheet#1").Range(Cell.Address) Then
Cell.Interior.ColorIndex = 3
End If
Next
End Sub