从dynamic长度的列复制粘贴数据

在Excel文件中,我有两个选项卡:input和输出。

在选项卡Input中,我在列A中有一个代码列表:code001,并且无限期地进行,因为我增加了越来越多的代码。

在列BI有一个关键字列表,如:蓝色的衣服,红色的铅笔,白色的围巾,…再次我没有关键字的数量,因为我join越来越多。

在列C和D上,我具有与A和B相同的结构(文件结构不能改变!)

我想在列A上输出选项卡Output(input选项卡的列A和列C)和列B上的关键字(input选项卡的列B和列D)。

我怎么能通过所有的列和行,有一个周期/function?

我认为你应该使用工作表公式来做到这一点。 在Sheet Output的 A栏中input这个公式:

=Input!A:A&Input!C:C

在表格B的B栏中input这个公式:

=Input!B:B&Input!D:D

如果问题是你不了解Excel VBA,那么下面的网站应该可以帮助你:

  • 这里是一个教程网站,将帮助您: Excel VBA教程
  • 了解VBA中的Excel对象模型
    • MSDN Library:Excel对象模型的超级简易指南
  • 了解如何在Excel VBA中使用单元格和范围
    • MSDN Library:使用单元格和范围
    • Excel 2003 VBA语言参考
  • 在Excel VBA中学习abouut用户表单和控件参见
    • MSDN Library:Excel VBA中的用户窗体
    • Chandoo.org:VBA中的用户表单和控件
    • Excel VBA Easy – Excel VBA UserForm

以下是您阅读的其他几个网站:

  • Excel MVP网站: 上下文Excel
  • Excel VBA站点: Chip Pearson
  • Excel MVP网站: Ron De Bruin
  • 电子表格(John Walkenbach)先生: 电子表格页面
  • Excel 先生 : Excel网站
  • Charley Kydd Excel MVP: Excel User dot Com
  • McGimpsey&Associates Excel MVP网站JE McGimpsey的XL页面

祝你好运

菲利普

我知道这是一个迟到的答案,但试试看。 这可能比需要更复杂,但有很多方法可以做到这一点。

 Public Sub stuff2() Dim rangeA, rangeB, ranceC, rangeD As Range Dim numA, numB, numC, numD As Integer With Sheets("Input") numA = Worksheetfunction.CountA(.Range("A:A")) numB = Worksheetfunction.CountA(.Range("B:B")) numC = Worksheetfunction.CountA(.Range("C:C")) numD = Worksheetfunction.CountA(.Range("D:D")) Set rangeA = .Range("A1:A" & numA) Set rangeB = .Range("B1:B" & numB) Set rangeC = .Range("C1:C" & numC) Set rangeD = .Range("D1:D" & numD) End With With Sheets("Output") rangeA.Copy .Range("A1") rangeB.Copy .Range("B1") rangeC.Copy .Range("A" & numA + 1) rangeD.Copy .Range("AB" & numB + 1) End With End Sub 

无可否认,我迟到了5年,提供了一个解决scheme….这是我的方法来解决它

 Sub consol Dim maxi as long, restrtrow as long, i as long For i = 1 to 4 If i = 1 or i = 3 then Maxi= sheets ("input").cells (1000000,i).end (xlup).row Restrtrow = sheets ("output").cells (1000000,1).end (xlup).row+1 Sheets ("input").select Range (Cells (2 ,i),cells ( maxi,i)).copy Sheets ("output").select Cells(Restrtrow,1).SELECT Selection.pastespecial paste:= xlpastevalues Elseif i =2 or i=4 then Sheets ("input").select Range (cells (2,i),cells (maxi,i)).select Selection.copy Sheets ("output").select Cells (2,restrtrow).select Selection.pastespecial paste:= xlpastevalues End if next end sub