【问题标题】:Change row delimiter for a specific column in Excel更改 Excel 中特定列的行分隔符
【发布时间】:2020-09-06 19:28:24
【问题描述】:

我有一个包含以下数据的 excel 文件。

+-------+----------+-------------------------+-----------+
| ID    | Material | Description             | Attribute |
+-------+----------+-------------------------+-----------+
| 10189 | Plate    | Dia.650mm 3-blade       | TK-BL     |
+-------+----------+-------------------------+-----------+
| 11189 | Nut      | MatType:A,C,M           | TK-OP     |
|       |          | Drive:HollowShaft       |           |
|       |          | Seal:PreparedForWelding |           |
+-------+----------+-------------------------+-----------+
| 12189 | Screw    | Wave1Batch1             | TK-MJ     |
+-------+----------+-------------------------+-----------+
| 13189 | Bolt     | 387L-2MM                | TK-MK     |
+-------+----------+-------------------------+-----------+

我必须将其转换为文本文件(制表符分隔)。所以当我把它保存为文本文件时,它保存为

ID                      Material    Description         Attribute
10189                   Plate       Dia.650mm 3-blade   TK-BL
11189                   Nut         MatType:A,C,M   
Drive:HollowShaft           
Seal:PreparedForWelding TK-OP       
12189                   Screw       Wave1Batch1         TK-MJ
13189                   Bolt        387L-2MM            TK-MK

由于描述中有新行,因此在转换时将其视为下一行。如何避免这种情况?我的 excel 中有 1000 个与此类似的值。我尝试将\n 替换为| 作为描述列,但它显示excel 找不到匹配项。请提出一些解决方案来避免这种情况。

这是尝试Ctrl+J后的截图

【问题讨论】:

  • 查看编辑后的答案。

标签: excel vba text newline file-conversion


【解决方案1】:

使用ctrl+H 将“ctrl+enter”替换为空格或其他符号,例如“/”或“|”

【讨论】:

  • 当我按下“ctrl+enter”时,我收到错误消息,提示“我们找不到您要查找的内容。
  • 其实,正确的方法是Alt+10(键盘区域的数字),我不确定你的笔记本电脑是否还保留它。所以我建议你使用crtl+enter,它可以在我的笔记本电脑上使用。这里建议另一种方式,在E列,使用=SUBSTITUTE(C1,CHAR(10),""),拖动公式。在没有“alt+enter”的情况下获得干净的单词。然后按值将其复制并粘贴到 c 列中。
  • 谢谢。现在,我为该专栏加上了双引号,它解决了这个问题。是的,SUBSTITUTE 似乎是另一种选择。也谢谢你。 +1
【解决方案2】:

我认为它们是一个包装的文本单元格。如果是这样,

使用查找和替换对话框。

在查找字段中输入 Ctrl + J。不会出现任何内容。顺其自然吧。

在替换字段中输入空格

然后点击全部替换

单元格中的所有换行符都将替换为空格。因此,仅在另存为文本之前建议这样做。然后您可以撤消或关闭 excel 而无需进一步保存。

编辑 不确定哪个是我们要替换的字符。我们可以使用 VBA 找到它并在 VBA 中替换它。但请记住,VBA 程序无法撤消。因此,如果需要,最好制作一份工作簿副本。

复制VBA模块中的函数。

Public Function asciien(s As String) As String
' Returns the string to its respective ascii numbers
   Dim i As Integer
   For i = 1 To Len(s)
      asciien = asciien & CStr(Asc(Mid(s, i, 1)))
   Next i
End Function

使用以下过程查找该单元格的 asciien。

Sub test()
Debug.Print asciien(Range("C3"))
End Sub

尝试定位 asciien 以换行。 使用以下过程将 asciien 替换为“|”整张纸。

Sub Macro1()
    Cells.Replace What:=Chr(10), Replacement:="|", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Cells.Replace What:=Chr(13), Replacement:="|", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

参考link1link2

【讨论】:

  • 谢谢。但它说Microsoft cannot find match
  • 尝试使用示例数据屏幕截图更新您的问题。
  • 完成。请看一下
  • 谢谢。现在,我为该专栏加上了双引号,它解决了这个问题。为您的努力和帮助 +1。
  • 很高兴来到这里。这就是我们从这里讨论 excel 问题中学到的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 2017-09-20
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2011-04-13
相关资源
最近更新 更多