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 万一 接下来我 结束小组