如果单元格包含值,则将数据复制到新工作表

时间:2014-02-14 16:24:40

标签: excel-vba excel-2010 vba excel

我正在寻找宏的帮助,以便我可以轻松地对数据进行排序和查看。

我有一个包含项目信息的第1行和第2行的电子表格。第3-93行有订购信息。对于3-93中的每一行,如果F和VU之间的任何列中都有值,则将该行的A,B,C列中的相应值复制到名为Orders的新工作表中,并将相应的值复制到行中该列的1和2。

例如,我需要这个:

......甲..........乙...........Ç................. ..................F............................... ............ GU

1 .............................................. .... 100235410(海军衬衫)...... 101028 316(Moss FR格纹)

2 .............................................. .................... XL ............................. ............ 2XL T

3..Jack ....布朗...当前............................. 2 .... .......................................... 1

复制到名为Orders的新工作表,如下所示:

.......甲.........乙.............Ç............... ........................ d ......................... .......Ë..................˚F

1 ... Jack ... Brown .... Current .............. 100235410(Navy Shirt).............. ... XL ................. 2

2 ... Jack ... Brown .... Current ............ 101028 316(Moss FR Plaid)......... 2XL T ... ........... 1

我正在努力使用VBA逻辑,似乎无法使其正常工作。非常感谢任何帮助或建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

这样的问题可能是一个挑战,如果你只是潜入编码,特别是对于初学者,它需要定义可以编码为离散过程的一口大小的块。我建议您创建一个流程图或逐步程序,描述如果必须手动进行更改,您将采取的措施。如果您的过程准确地描述了这些步骤,则可以创建执行每个步骤的代码,并按照流程图中描述的顺序将这些代码剪切在一起。

此外,请务必为每个行或工作表或您将使用的其他离散数据集定义可重复的过程。然后,您可以循环这些进程,以避免反复编写相同的代码。

对于上面的示例,如果我理解正确,您首先要定义客户定义的范围:在这种情况下,范围从A3到A93(或者最高行数可能是。如果变化,您需要定义一个随特定数据集更改的范围(使用.End方法,例如,如果数据中没有空单元格(理想情况下不应该这样),您可以这样做:< / p>

Dim wbOrders As Workbook
    Set wbOrders = ActiveWorkbook
Dim wsOrders As Worksheet
    Set wsOrders = wbOrders.ActiveSheet
Dim rngOrders As Range
    Set rngOrders = wsOrders.Range("A3", wsOrders.Range("A3").End(xlDown))

一旦定义了订单的范围,您就可以遍历数据以处理各个订单:

Dim rngCustomer As Range

For Each rngCustomer In rngOrders
    '~~>Here you could define other ranges to work with (perhaps columns F to VU of the
    '   current row)
    '~~>Here you could also define other loops/routines to move the data
Next rngCustomer

在上面的循环结构中,您可以Dim一系列客户订单,遍历包含数据的范围查找列,使用每个列包含找到的数据(一次一个)来获取数据(可能是一个从那一行和第1行和第2行开始,将它传送到新的一行 在第一个循环找到并定义所有客户订单数据并将其放入数组后,可以将这些值添加到所有新工作表中,或者将其转换为值数组。

我希望这足以让你开始解决这个问题。如果您在单个步骤的编码过程中遇到障碍,请在StackOverflow或Web上进行搜索以查找解决方案。如果您没有找到它们,请发一个详细说明您尝试过的问题,并将特定的非工作代码包含在StackOverflow中,我几乎保证您将在24小时或更短的时间内得到答案。