1

假设有一个报告将费用与输出到 Excel 的调整进行比较,这样每一行都有以下字段:

  • 帐号
  • 收费日期
  • 原始项目编号
  • 调整项目编号
  • 原始数量
  • 调整数量
  • 原始金额
  • 调整金额
  • 原始发布日期
  • 调整后的发布日期

我需要帮助用户在 Excel 中创建一个视图,以帮助他们发现每条记录中的更改。她希望它在两行中显示每条记录,如下所示:

帐户 | 日期 | O. 项目 | O. 数量 | O. 金额 | O.邮政
         | | A. 项目 | A. 数量 | A. 金额 | 一个帖子             

Excel 中是否有任何内置功能可以让您像这样对记录进行分组?在这种情况下,VBA 不是一个选项。

如果帐户和日期下的单元格与这些值重复,那没关系,如果这样更容易的话。如果您可以获得某种有助于分隔每条记录的交替行效果(如果必须的话,我可以稍后在 vba 中自行完成该部分)。

4

6 回答 6

2

这有点棘手,但可行。我目前正在研究这个,待命。

好的,思路是这样的。

您有以下布局:

/| 一个 | 乙| C | D | F |
-+---------+---------+---------+---------+-------- -+
1| 户口号码 | 数据1 | 数据1' | 数据2 | 数据2' |
2| 1 | 10 | 11 | 一个 | 乙 |
3| 2 | 100 | 108 | 一个 | 一个 |
4| 3 | 50 | 55 | f | 克 |

制作第二张工作表:

/| 一个 | 乙| C | D |
-+-----+-----+------------------+------ ------------------------------------+
1| A/O | 参考 | 数据1 | 数据2 |
2| 一个 | 2 | =INDIRECT("Sheet1!B" & $B2) | =INDIRECT("Sheet1!D" & $B2) |
3| ○ | 2 | =INDIRECT("Sheet1!C" & $B3) | =INDIRECT("Sheet1!E" & $B3) |
4| 一个 | 3 | =INDIRECT("Sheet1!B" & $B4) | =INDIRECT("Sheet1!D" & $B4) |
5| ○ | 3 | =INDIRECT("Sheet1!C" & $B5) | =INDIRECT("Sheet1!E" & $B5) |

在我当前的模型中,“A/0”和“Ref”列是手动的。可能有一种方法可以使它们自动化,但我想保持简单。填写以覆盖 Sheet1 中任意长的输入表将起作用。

于 2008-11-04T16:20:47.763 回答
1

一个简单的解决方法可能是使用条件格式(说明适用于 Office 2007):

  1. 突出显示“已调整”列(假设它是 D 列,而原始是 C 列)
  2. 点击“条件格式”
  3. 点击“新规则...”
  4. 单击最后一项“使用公式确定要格式化的单元格”
  5. 输入 C1 <> D1
  6. 选择一种格式样式。

应用规则,所有不匹配的条目将以您选择的样式突出显示。

于 2008-11-04T16:28:42.473 回答
1

我也用间接做到了这一点。我在第二张纸上的公式看起来像:

=INDIRECT("source!A" & INT(ROW()/2)+1)

您将对字母进行硬编码以指示列源,然后计算将自动从正确的行中选择。应该尽可能地复制下来。

于 2008-11-04T16:51:27.357 回答
0

我认为只有编程才有可能(嘿,这是一个与编程相关的网站)。

当 VBA 不是一个选项时,是否允许使用 VB.Net 或 C#?

于 2008-11-04T16:23:50.893 回答
0

几年前我已经在 VBA 中做到了这一点,效果很好,我想你可以使用 C# 和 Interops 做同样的事情吗?

我可以说出添加、删除和更改的内容。它最终创建了一个易于整理和过滤的报告。

有没有理由不选择 VBA?还有哪些其他选择?

您还可以使用 Excel 函数交叉引用数据,但这对于不是 Excel 高级用户的人来说可能非常复杂excel公式的一般帮助

编辑:您将需要 Find Index Offset VLookup Match 之类的功能,这都可以通过组合它们来完成。唯一的缺点是公式长度有限制。当达到此限制时,将逻辑拆分为多列或多行。

编辑:您可以将 VBA 集成到一个工作簿中,并保存模板。每次他们希望比较时,他们都使用此模板来执行比较。这种方式不需要部署。他们只需要复制文件并使用它。

编辑: Tomalak 提出的解决方案可能不起作用,因为添加或删除记录时,我们无法控制这些记录的位置。您将需要找到具有键匹配的行并从那里开始工作。

于 2008-11-04T16:26:33.367 回答
0

条件格式可以同时完成这两项工作,因为每个单元格最多可以有 3 个条件

  1. 您可以(例如)使用红色粗体文本突出显示任何不同的单元格,使用这样的验证公式

    例如 =(DataA!C8 <> DataB!C8)

  2. 您可以使用这样的公式对交替行进行着色(如单元格 C8 中所用)

    例如 =(MOD(CELL("Row",C8),2)=0)

这将遮蔽均匀的行。当然,要对奇数行进行着色,请在公式末尾使用 =1 而不是 =0

于 2008-11-04T22:15:46.830 回答