Excelmacros在工作表中查找文本值,复制相应的列,并将整个列粘贴到另一个工作表上

我已经设置了一个Excel文件,将其他工作簿中的数据粘贴到工作sheet 1 ,然后将工作sheet 2设置为通过使用

 A1 =IF(NOT(ISBLANK(Sheet1!B1)),Sheet1!B2,"") 

在整个表格中(单元格的引用根据我的需要而改变)。

通常这对我来说工作得很好,问题是,有时当我下载新的原始数据并复制到工作sheet 1 ,工作sheet 1中的列已经移动到我,因为随机添加了新的列和我的工作sheet 2公式sheet 2中断,因为它只是简单地引用我select的表1中的相应列,而不是我需要的实际数据。

下面是一个例子:

工作表1(第1天)(只需将原始数据复制到我的工作簿)

  | A | B | C | D | E | F | --+-------+-------+-------+-------+-------+-------+ 1 | Cat 1 | Cat 2 | Cat 3 | Cat 4 | Cat 5 | Cat 6 | 2 | 1A | 1B | 1C | 1D | 1E | 1F | 3 | 2A | 2B | 2C | 2D | 2E | 2F | 4 | 3A | 3B | 3C | 3D | 3E | 3F | 

第2页(第1天)(使用前面提到的公式输出所需的信息)

  | A | B | C | --+-------+-------+-------+ 1 | Cat 2 | Cat 6 | Cat 4 | 2 | 1B | 1F | 1D | 3 | 2B | 2F | 2D | 4 | 3B | 3F | 3D | 

表1(第2天)(第二天左右复制原始数据)

  | A | B | C | D | E | F | G | --+-------+-------+-------+-------+-------+-------+-------+ 1 | Cat 1 |Random | Cat 2 | Cat 2 | Cat 4 | Cat 5 | Cat 6 | 2 | 1A | 1X | 1B | 1C | 1D | 1E | 1F | 3 | 2A | 2X | 2B | 2C | 2D | 2E | 1F | 4 | 3A | 3X | 3B | 3C | 3D | 3E | 1F | 

工作表2(第2天)(由于新的不需要的列而产生的输出)

  | A | B | C | --+-------+-------+-------+ 1 |Random | Cat 5 | Cat 3 | 2 | 1X | 1E | 1C | 3 | 2X | 2E | 2C | 4 | 3X | 3E | 3C | 

由于我正在处理超过100列的数据,有时甚至有将近2万行,因此对于我来说,在表单1中search已更改的列或者在每次获取表单2中的新数据时都修改我的公式是不切实际的。

所以我的问题是,任何人都可以提出一种方法来在Excel中写入macros,以便在工作表1的第1行中search文本值,复制包含该值的整个列,并粘贴工作sheet 2的整个列? 我相当有信心在Excel中使用公式,但几乎没有macros的知识,真的很感谢一些帮助。

你可以尝试使用这个macros:

 Sub Macro1()
 “
 'Macro1macros
 “

     Dim cell As Range
    对于我= 1至50
        表( “工作表Sheet1”)。select
        如果Cells(1,i).Value =“Cat 2”那么
        列(I)。select
         Selection.Copy
        表( “Sheet2的”)。select
        范围( “A1”)。select
         ActiveSheet.Paste
        万一
        如果Cells(1,i).Value =“Cat 6”那么
        列(I)。select
         Selection.Copy
        表( “Sheet2的”)。select
        范围( “B1”)。select
         ActiveSheet.Paste
        万一
        如果Cells(1,i).Value =“Cat 4”那么
        列(I)。select
         Selection.Copy
        表( “Sheet2的”)。select
        范围( “C1”)。select
         ActiveSheet.Paste
        万一
    接下来我
结束小组