Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel vba中将数据从一个表动态移动到另一个表_Vba_Excel - Fatal编程技术网

在excel vba中将数据从一个表动态移动到另一个表

在excel vba中将数据从一个表动态移动到另一个表,vba,excel,Vba,Excel,我在同一工作簿下的两个不同工作表中有两个表 表1和表2 我想创建一个函数,将表1和表2作为 参数 将单元格从表1复制到表2,但我们有2个单元格 问题: 要更新哪一列和哪一行以了解正确的单元格 哪一列应基于列的命名示例: 表1.第1列将成为表2.第1列 因此,检测要更新的列将基于匹配的列名 哪一行应该是表2+1中的最后一行 所以不管有多少列,函数都应该根据列名在表2中进行搜索和匹配 我不需要精确的语法,我只想知道逻辑是如何运行的 更新: 这是一个例子: 图片: 我将这样调用函数: 动态迁移(表1、

我在同一工作簿下的两个不同工作表中有两个表

表1和表2

  • 我想创建一个函数,将表1和表2作为 参数
  • 将单元格从表1复制到表2,但我们有2个单元格 问题:
  • 要更新哪一列和哪一行以了解正确的单元格

    哪一列应基于列的命名示例:

    表1.第1列将成为表2.第1列 因此,检测要更新的列将基于匹配的列名

    哪一行应该是表2+1中的最后一行

    所以不管有多少列,函数都应该根据列名在表2中进行搜索和匹配

    我不需要精确的语法,我只想知道逻辑是如何运行的

    更新:

    这是一个例子:

    图片:

    我将这样调用函数:

    动态迁移(表1、表2)


    因此,该函数将根据图像示例中相同的列名将表1中的所有数据移动到表2中匹配的列。

    这些表是列表对象。它们的行和列参数可以通过

    RowAfterLast = ws(j).ListObjects(ListObj(j)).Range.Row + ws(j).ListObjects(ListObj(j)).Range.Rows
    ColumnAfterLast = ws(j).ListObjects(ListObj(j)).Range.Column + ws(j).ListObjects(ListObj(j)).Range.Columns
    
    .Row和.Column参数表示区域的左上角,而.Row和.Column参数则表示单元格的宽度和深度。
    要告诉标题的列号,只需在标题中搜索字符串。如果名称可能不同,您可以在xlPart中搜索,或者在满足Like参数时使用输出列的循环

    ws(j).Range(Header).Find(title1, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, LookAt:=xlWhole).Column
    

    你能举个例子吗?描述非常简单blury@AnalystCave.com:我使用图像添加更新。让我知道它是否清晰。顺便说一句,如果你的标题相同,你只需要识别记录的最左边的值和每行的偏移量。非常感谢,我只有一个问题没有解决。如果find函数没有在目标表中找到所需的列?我试过了,发现它出现了错误,有什么想法吗?嗨,find.count得到的是整个工作表中的列索引,而不是表中的:'DestColumnIndex=destTable.Range.find(ColumnName,MatchCase:=\uTrue,SearchFormat:=False,SearchOrder:=xlByColumns,SearchDirection:=xlPrevious,LookAt:=xlWhole).column'如果表的第一列在D上,则DestColumnIndex应为1,但得到4。有什么办法解决这个问题吗?删减起始列,然后添加一个?DestColumnIndex=destTable.Range.Find(ColumnName,MatchCase:=\True,SearchFormat:=False,SearchOrder:=xlByColumns,SearchDirection:=xlPrevious,LookAt:=xlWhole)。column destTable.Range.column+1thx,这可能是一个选项,但我的意思是有没有办法在listObject中同时使用.Find和.column?