如果在另一个单元格匹配时单元格为空,如何在行之间的Excel中复制单元格数据

时间:2013-01-08 22:44:57

标签: excel vba excel-vba

我知道标题真的很长,我会尝试解释

我正在尝试将Magento产品纳入Zen Cart(仅限背景 - 不应该相关)。

我有一个excel 2010 xls电子表格,其中我有大量的产品数据:skus,价格,类别等......你明白了。我将每个产品及其数据列出一次,每个产品都有一个独特的SKU字段。

但是......其中一些产品属于多个类别和我导入的方式,每个产品需要多次列出,每个类别一次。

所以,我做了一个包含两列的sql转储; sku和类别。我已将这些值粘贴到excel中作为新行,所以现在我有这样的情况(有更多条目):

enter image description here

正如您所看到的每个sku(左侧突出显示),有一个条目包含除类别(右侧突出显示)之外的所有数据,然后它所属的每个类别都有一个附加条目,其中仅包含类别和sku但没有其他数据。

所以,我需要做的是如何使用相同的sku复制所有单元格中的所有数据(除了类别列)。有没有人知道如何在不按Ctrl + V数百次的情况下实现这一目标。我意识到VBA可能很容易处理这个问题,但我在这方面没有任何线索。

任何帮助非常感谢

4 个答案:

答案 0 :(得分:3)

我希望你愿意使用第二张,并引用数据而不是实际复制。

在Sheet2上,将A1设置为=IF(Sheet1!A1="", "", Sheet1!A1)。将其向下拖动(扩展/填充)到A500(与Sheet1上的数据一样多,或者进一步,以允许增长)。同时将A1拖到AA1,然后将其拖到AA500

然后将B2设置为=IF($AA2="", Sheet1!B2, B1),将其拖至Z2,然后将B2:Z2向下拖至B500:Z500

P.S。如果您的任何数据(列)是日期,您可能需要在Sheet2上将它们显式格式化为日期。对于以任何非默认方式格式化的任何其他值(例如,货币或百分比)同上。可能有必要对进行具有值的单元格(而不是空白单元格)。

答案 1 :(得分:2)

您不需要VBA,除非您需要多次这样做 假设包含您的数据的工作表被称为Source,并且带有结果的工作表被称为Dest,您可以在工作表Dest上按照这些步骤获得您想要的内容:

  • 在A1类型=Source!A1
  • 在A2类型=IF(ISBLANK(Source!A2),A1,Source!A2)
  • 选择范围A1:XX1(其中XX是工作表来源的最后一列)
  • 按Ctrl + R(将第一个单元格复制到右侧)
  • 选择范围A2:XX ##(其中##是工作表来源的最后一行)
  • 按Ctrl + R和Ctrl + D(向右和向下复制)

以下是对正在发生的事情的解释:
第一行是从源中复制的。
如果该单元格为空,则仅从Source复制第二行的每个单元格,否则复制上面的单元格。

答案 2 :(得分:1)

这是快速而肮脏的解决方案:

  1. 选择您需要填写的列
  2. 按转到Ctrl-G
  3. 特别`Alt-S'
  4. 空白(Alt-KEnter
  5. 这应该选择所有空白单元格。现在输入=B2(假设您在B3中,即使用活动单元格上方的单元格)重要提示:按Ctrl-Enter代替Enter输入公式。
  6. 完成!

答案 3 :(得分:0)

在一个新的工作表上,通过在单元格A1中键入1,在单元格A2中键入2,然后选择这两个单元格并填充Z,将数字1-26在Row1的顶部运行。

现在在A2中输入以下公式=VLOOKUP(Sheet1!$A1,Sheet1!$A:$AA,VALUE(A$1),FALSE) 在范围A2中填写此公式:Z ##(其中##表示最后一行数据)。 然后将Sheet1中的Row1从Sheet1复制到Row1。

这个公式会将数据行直接复制到它们下面的空行中(假设sku只在有一行新信息的地方发生变化。

这将是所有活动公式,因此我建议在Sheet2上选择all并右键单击单元格A1,然后按值粘贴特殊值。