文本宏到列

时间:2014-06-29 06:14:47

标签: excel-vba vba excel

    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

我在工作表input1中的单元格A3中有800个单词,我在Excel 2007中使用“文本到列”功能记录在宏上面,这个函数给出错误“太多行继续”。

有人可以告诉我确切的代码,实际上我想将不同单个单元格中的所有800个单词添加为同一行中每个单元格中的一个单词。

1 个答案:

答案 0 :(得分:1)

我不相信可以告诉Macro Recorder创建更长的行,所以我认为不能TextToColumns为你录制这段代码。

您正在使用固定宽度选项,因此单词从位置0,60,63,68,71开始,依此类推。已经记录了大约120个单词的开始位置,所以,如果你想构建一个像这样的数组,你将会有很多输入。

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

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