Excel 用于文本到列的宏

Excel 用于文本到列的宏,excel,vba,Excel,Vba,我在表单输入1的A3单元格中有800个单词,我使用Excel 2007中的函数“文本到列”记录了上述宏,该函数给出了错误“太多行连续” 有人能告诉我确切的代码吗?确实,我想把不同单元格中的所有800个单词添加为同一行中每个单元格中的一个单词。我认为不可能让宏记录器创建更长的行,因此我不认为可以让TextToColumns为您记录此代码 您使用的是固定宽度选项,因此单词从位置0、60、63、68、71开始,依此类推。大约120个单词的起始位置已经被记录下来,所以,如果你想构建这样的数组,你需要大量

我在表单输入1的A3单元格中有800个单词,我使用Excel 2007中的函数“文本到列”记录了上述宏,该函数给出了错误“太多行连续”


有人能告诉我确切的代码吗?确实,我想把不同单元格中的所有800个单词添加为同一行中每个单元格中的一个单词。

我认为不可能让宏记录器创建更长的行,因此我不认为可以让
TextToColumns
为您记录此代码

您使用的是固定宽度选项,因此单词从位置0、60、63、68、71开始,依此类推。大约120个单词的起始位置已经被记录下来,所以,如果你想构建这样的数组,你需要大量的打字

你说“单词”。对我来说,这意味着由空格分隔的可变长度字符串。如果正确,请尝试下面的代码。它使用函数
Split
按空格将单元格A3拆分为单词。然后沿第4行展开,忽略由双空格或三空格创建的任何间隙

    Sub Macro9()
'
' Macro9 Macro
'

'
    Selection.TextToColumns Destination := Range("A3"), DataType := xlFixedWidth, _
        FieldInfo := Array(Array(0,1),Array(60,1),Array(63,1),Array(68,1),Array(71,1), _
        Array(85,1),Array(88,1),Array(93,1),Array(99,1),Array(107,1),Array(111,1),Array _
        (120,1),Array(123,1),Array(127,1),Array(130,1),Array(134,1),Array(143,1),Array( _
        147,1),Array(157,1),Array(162,1),Array(165,1),Array(170,1),Array(202,1),Array( _
        233,1),Array(236,1),Array(238,1),Array(248,1),Array(251,1),Array(260,1),Array( _
        265,1),Array(277,1),Array(283,1),Array(287,1),Array(291,1),Array(295,1),Array( _
        299,1),Array(302,1),Array(306,1),Array(310,1),Array(322,1),Array(326,1),Array( _
        332,1),Array(335,1),Array(338,1),Array(344,1),Array(348,1),Array(356,1),Array( _
        360,1),Array(367,1),Array(373,1),Array(375,1),Array(384,1),Array(387,1),Array( _
        394,1),Array(398,1),Array(403,1),Array(409,1),Array(413,1),Array(419,1),Array( _
        424,1),Array(429,1),Array(432,1),Array(438,1),Array(444,1),Array(449,1),Array( _
        454,1),Array(458,1),Array(463,1),Array(468,1),Array(474,1),Array(478,1),Array( _
        481,1),Array(484,1),Array(489,1),Array(493,1),Array(524,1),Array(554,1),Array( _
        557,1),Array(563,1),Array(565,1),Array(577,1),Array(594,1),Array(613,1),Array( _
        616,1),Array(620,1),Array(626,1),Array(629,1),Array(634,1),Array(646,1),Array( _
        654,1),Array(659,1),Array(667,1),Array(669,1),Array(675,1),Array(683,1),Array( _
        689,1),Array(696,1),Array(699,1),Array(706,1),Array(714,1),Array(717,1),Array( _
        721,1),Array(728,1),Array(730,1),Array(743,1),Array(751,1),Array(754,1),Array( _
        758,1),Array(767,1),Array(774,1),Array(779,1),Array(787,1),Array(790,1),Array( _
        798,1),Array(805,1),Array(808,1),Array(817,1),Array(822,1),Array(826,1),Array( _
        835,1),Array(845,1),Array(853,1),Array(857,1),Array(864,1),Array(869,1),Array( _
        877,1),Array(881,1),Array(891,1),Array(895,1),Array(903,1),Array(912,1),Array( _
        916,1),Array(920,1),Array(927,1),Array(933,1),Array(937,1),Array(941,1),Array( _

End Sub
选项显式
子拆分单元()
暗淡的细胞和长的细胞一样
暗淡如长
将单词()设置为字符串
带工作表(“输入1”)
Word=Split(.Range(“A3”),“”)
CellCrnt=1
对于InxW=LBound(Word)到UBound(Word)
'任何双空格都会导致Word中出现空条目。
'忽略这些空条目
如果单词(InxW)“,那么
.Cells(4,CellCrnt).值=字(InxW)
CellCrnt=CellCrnt+1
如果结束
下一个
以
端接头

您能帮我回答今天提出的问题吗?请使用标题将数据从word文件导入excelmacro@Sidharth对不起,我不知道VBA这个词。如果我想将数据从Word传输到Excel,我会:(1)选择Word中的所有内容,(2)粘贴到Excel工作表,(3)根据需要使用Excel VBA整理结果。
Option Explicit
Sub SplitCell()

  Dim CellCrnt As Long
  Dim InxW As Long
  Dim Word() As String

  With Worksheets("input1")

    Word = Split(.Range("A3"), " ")

    CellCrnt = 1

    For InxW = LBound(Word) To UBound(Word)
      ' Any double spaces will cause empty entries in Word.
      ' Ignore these empty entries
      If Word(InxW) <> "" Then
        .Cells(4, CellCrnt).Value = Word(InxW)
        CellCrnt = CellCrnt + 1
      End If
    Next

  End With

End Sub