如果在另一个单元格匹配的单元格为空时,如何在行间的Excel中复制单元格数据
我知道标题真的很长,我会尽力解释
我正在尝试将Magento产品转换为Zen Cart(仅适用于背景 – 不应相关)。
我有一个Excel 2010的XLS电子表格,并在其中我有一个产品数据负载:skus,价格,类别等…你明白了。 我将每个产品连同其数据一起列出,每个产品都有唯一的SKU字段。
但是…这些产品中的一些产品不止一个类别,而且我input的方式也不尽相同,每个产品都需要多次列出,每个类别一次。
所以,我做了一个包含两列的sql转储; sku和类别。 我已经把这些值粘贴到excel作为新的行,所以现在我有这样的情况(有更多的条目):
正如你可以看到每个SKU(左侧突出显示)有一个条目,包含除了类别(右侧突出显示)的所有数据,然后有一个额外的条目,它属于每个类别只包含类别和sku,但没有其他数据。
所以,我需要做的是如何复制所有的数据(除了类别栏)跨所有单元与相同的SKU。 有没有人有任何想法,我怎么能达到这个没有击中Ctrl + V几百次。 我意识到VBA可以很容易地处理这个,但我没有在这方面的线索。
任何帮助不胜感激
我希望你愿意使用第二张纸,并引用数据而不是实际复制。
在Sheet2上,将A1
设置为=IF(Sheet1!A1="", "", Sheet1!A1)
。 将其拖放(扩展/填充)到A500
(尽可能多地处理Sheet1中的数据,或者进一步增大数据量)。 同时将A1
拖到AA1
,然后将其拖到AA500
。
然后将B2
设置为=IF($AA2="", Sheet1!B2, B1)
,将其拖动到Z2
,然后将B2:Z2
拖动到B500:Z500
。
PS如果您的任何数据(列)都是date,您可能需要将它们明确地格式化为Sheet2上的date。 对于任何非默认方式(例如,货币或百分比)格式的任何其他值,同上。 这可能是必要的, 只有对其中有值(而不是空白单元格)的单元格。
你不需要VBA,除非你需要多次这样做。
假设带有您的数据的工作表被称为Source
,结果的工作表被称为Dest
,你可以得到你想要的东西在工作表上的这些步骤Dest
:
- 在A1types
=Source!A1
- 在A2types
=IF(ISBLANK(Source!A2),A1,Source!A2)
- select范围A1:XX1(其中XX是表单源的最后一列)
- 按下Ctrl + R(将第一个单元格复制到右侧)
- select范围A2:XX ##(其中##是表单源的最后一行)
- 按Ctrl + R和Ctrl + D(向右和向下复制)
以下是对发生的事情的解释:
第一行是从源中复制的。
第二行的每个单元格只有在该单元格为空时才从Source复制,否则上面的单元格将被复制。
这是快速和肮脏的解决scheme:
- select你需要填写的栏目
- 按Goto
Ctrl-G
- 特别的“Alt-S”
- 空白(
Alt-K
,Enter
) - 这应该select所有的空白单元格。 现在键入
=B2
(假设你在B3中,即使用活动单元格上方的单元格)。重要提示:按Ctrl-Enter
代替Enter键input公式。
完成!
在新的工作表中,通过在单元格A1中input1,在单元格A2中input2,然后select这两个单元格并通过Z填充,在Row1中获取数字1-26。
现在在A2中input以下公式=VLOOKUP(Sheet1!$A1,Sheet1!$A:$AA,VALUE(A$1),FALSE)
在范围A2:Z ##中填写此公式(其中##表示您的最后一行数据的)。 然后将Sheet1上的Row1复制到Sheet2上的Row1。
这个公式将直接将数据行复制到它们下面的空行(假设sku仅在存在一行新信息时才改变)。
这将是所有积极的公式,所以我build议在Sheet2上select所有,然后在单元格A1中右键单击,然后按值粘贴。