【问题标题】:Excel-VBA: how to improve that code (text in rows feature for a range)Excel-VBA:如何改进该代码(范围内的行中文本功能)
【发布时间】:2013-07-24 08:45:46
【问题描述】:

我目前正在尝试解决一个问题。 它涉及在 excel 文件中转换格式,这让我抓狂。

Import raw data from excel into another excel

现在我找到了一种我乐观地认为它可以解决问题的方法。 为了“修复”它,我使用“行中的文本”功能 -> 作为 VBA 记录为

   Selection.TextToColumns Destination:=range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True

我了解到,可以使用此代码修复一行,但不能一次修复多个。 现在我想知道,如何改进这段代码,它可以一次修复一个范围(“A7”、“DR621”)。

如果有人可以帮助我并为我指明正确的方向,我将非常高兴。

提前致谢 亚瑟

编辑:排序错误作为屏幕截图

http://www.xup.in/dl,78038715/date_wrong_sorting.jpg/

【问题讨论】:

  • 这里的问题是,当您将文本转换为列时,它将覆盖文本旁边列中的任何内容。如果您确信在导入数据之后有足够的空白列,那么您可以循环上面的代码,将“A1”更改为需要文本到列的任何列。查看您以前的帖子,您的传入数据可能是用 *.xls 扩展名分隔的制表符 - 这就是它被奇怪地导入的原因。
  • @RowanC - 谢谢! RE:制表符分隔 - 可能是的。 mysql 导出是通过 php 脚本完成的。输出为 excel (*.xlsx)。我尝试将原始数据导入到包含一些简单宏的工作表中,以使没有经验的用户更容易进行上下排序和导航。
  • 如果您可以更具体地了解您想要的“修复”,我们也可以提供更多帮助。
  • 你好@LS_dev - 有“修复”问题,我的意思是将文本转换为值。我相信,这将解决我在排序方面遇到的另一个问题。
  • 将新问题置于同一主题中已解决的问题之上并不是一个好主意。您可以改为打开新线程/问题。

标签: excel vba


【解决方案1】:

How to parse data using the Text To Columns command in Excel

您转换的范围可能包含许多行,但一次只能转换一列数据

您可以像这样循环列(示例偏移量是同一张纸上的 5 列):

For Each c In Selection.Columns
   c.TextToColumns Destination:=Cells(c.Row, c.Column + 5), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
Next

【讨论】:

  • 感谢 revoua 的快速响应!是否有可能通过任何类型的循环来自动执行此操作?
猜你喜欢
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2018-03-14
  • 2021-12-02
  • 2015-06-03
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多