假设有一份报告将费用与输出到excel的调整进行比较,这样每行都有以下字段:
我需要帮助用户在Excel中创建一个视图,帮助他们发现每条记录中的更改。她想让它以两行显示每一条记录:
Account | Date | O. Item | O. Qty | O. Amount | O. Post | | A. Item | A. Qty | A. Amount | A. Post
Excel中是否包含任何内容以允许您对此类记录进行分组?在这种情况下,VBA不是一个选项。
如果帐户和日期下的单元格重复这些值,那就没关系了,如果这样可以更容易。如果你可以获得某种交替的行效果,有助于划分每条记录(如果必须的话,我可以在vba中自行完成这部分)。
答案 0 :(得分:2)
这有点棘手,但可行。我现在正在研究这个问题,待命。
好的,这个想法就是这个。
您有以下布局:
/| A | B | C | D | F | -+---------+---------+---------+---------+---------+ 1| Acc No. | Data1 | Data1' | Data2 | Data2' | 2| 1 | 10 | 11 | a | b | 3| 2 | 100 | 108 | a | a | 4| 3 | 50 | 55 | f | g |
制作第二张图片:
/| A | B | C | D | -+-----+-----+-----------------------------+-----------------------------+ 1| A/O | Ref | Data1 | Data2 | 2| A | 2 | =INDIRECT("Sheet1!B" & $B2) | =INDIRECT("Sheet1!D" & $B2) | 3| O | 2 | =INDIRECT("Sheet1!C" & $B3) | =INDIRECT("Sheet1!E" & $B3) | 4| A | 3 | =INDIRECT("Sheet1!B" & $B4) | =INDIRECT("Sheet1!D" & $B4) | 5| O | 3 | =INDIRECT("Sheet1!C" & $B5) | =INDIRECT("Sheet1!E" & $B5) |
在我当前的模型中,“A / 0”和“Ref”列是手动的。可能有一种方法可以自动化它们,但我想保持简单。填写下来以覆盖Sheet1中任意长的输入表将起作用。
答案 1 :(得分:1)
一个简单的解决方法可能是使用Conditional Formatting(针对Office 2007的说明):
应用规则,所有不匹配的条目将以您选择的样式突出显示。
答案 2 :(得分:1)
我也用间接做了这个。我在第二张纸上的公式看起来像:
=间接(“来源!A”& INT(行()/ 2)+1)
您将对字母进行硬编码以指示列源,然后计算将自动从正确的行中进行选择。应该尽可能地复制。
答案 3 :(得分:0)
我认为只有编程才有可能(嘿,这是一个与编程相关的网站)。
当VBA不是一个选项时,是否允许使用VB.Net或C#?
答案 4 :(得分:0)
几年前我在VBA中做到了这一点并且效果很好,我想你可以使用C#和Interops做同样的事情吗?
我可以告诉我添加,删除和更改了什么。它最终创建了一个易于理清和过滤的报告。
VBA不是一个选择的原因吗? 还有哪些其他选择?
您也可以使用Excel功能交叉引用数据,但对于不是excel超级用户的人来说,可以非常复杂。 general help in excel formulas
编辑:您需要查找索引偏移量VLookup匹配等功能,这可以通过组合它们来完成。唯一的缺点是公式长度有限制。达到此限制时,将逻辑分成多列或多行。
编辑:您可以在单个工作簿中集成VBA,并保存模板。每次他们想要比较时,他们都会使用这个模板来执行比较。这样就不需要部署了。他们只需要复制文件并使用它。
编辑:Tomalak提出的解决方案可能不起作用,因为添加或删除记录时,我们无法控制这些记录的位置。你需要找到一个关键匹配的行并从那里开始工作。
答案 5 :(得分:0)
条件格式化可以同时执行这两个作业,因为每个单元最多可以有3个条件
你可以(比方说)使用红色粗体文字突出显示任何不同的细胞,使用这样的验证公式
例如=(DataA!C8< DataB!C8)
您可以使用这样的公式(在单元格C8中使用)
来替换备用行例如=(MOD(CELL(“行”,C8),2)= 0)
会遮挡甚至行。当然,要改为遮蔽奇数行,在公式的末尾使用= 1而不是= 0