编写一个macros来为文本string使用移调function

我试图将文本行移动到一个新的工作表中的Excel中的一列。 转置function运行良好,但一次只能移动一行。 我想得到一个macros,将成千上万的数据行跨多个列成一列。 请看下面的例子(我已经用分号分隔了行中的每一列)。 在此先感谢您的帮助。

行:

Avila P, 2005, CHEM ENG J; Barbero BP, 2008, CHEM ENG J; Crookes R, 2004, SERIES MAT SUS APLIC Duran FG, 2009, APPL CATAL B-ENVIRON; Amini SK, 2004, CHEM PHYS LETT Ali MH, 2005, SYNTHESIS-STUTTGART; Arya P, 2001, CURR OPIN CHEM BIOL; Balunas MJ, 2008, J NAT PROD 

柱:

 Avila P, 2005, CHEM ENG J Barbero BP, 2008, CHEM ENG J Crookes R, 2004, SERIES MAT SUS APLIC Duran FG, 2009, APPL CATAL B-ENVIRON Amini SK, 2004, CHEM PHYS LETT Ali MH, 2005, SYNTHESIS-STUTTGART Arya P, 2001, CURR OPIN CHEM BIOL Balunas MJ, 2008, J NAT PROD 

如果我正确阅读这个问题,我想下面的代码将工作:

 Dim c as Range, Rng as Range, cDest as Range Dim x as long Dim shOrig as worksheet, shDest as WorkSheet Set shOrig = Sheets("NameOfSheetWithData") Set shDest = Sheets("NameOfSheetToPasteTo") Set Rng = shOrig.Range("A1:Z100") ' Set to range where data is held Set cDest = shDest.Range("A1") ' Cell to start pasting data into x = 0 For Each c In Rng If c.Value <> "" Then ' Skip blank cells cDest.Offset(x, 0).Value = c.Value x = x + 1 End If Next c 

Excel上有一个叫做“Text to Columns”的特性,可以用来解决这类问题。

select数据,点击“Text to Columns”(在Data选项卡中),select“Delimited”,点击next,在这种情况下select“Semicolon”作为分隔符。

当你再次点击下一步时,对话框将显示你的结果将如何。 每个集合将存储在同一行的不同列中。

除非您在对话框中更改目的地,否则默认情况下,原始数据将被replace为第一列。

点击完成查看结果。

一种使用Excel对象模型的新特性编写macros的标准技术,那个人还不熟悉的是:

  • 以微型loggingmacros ;
  • 然后使用VBA编辑器将macros展开为全尺寸。

如果我理解正确的话,OP可以采用稍微小于“正面”的方法,并且可以通过Word解决:

  1. 复制电子表格数据和主页>剪贴板>作为无格式文本粘贴到Word中。 (这会自动用标签replace单元格边界。)
  2. select,插入>表格>表格 – 将文本转换为表格,列数设置为1 (单独的文本应该在标签上预设)。
  3. select结果并粘贴回Excel。