【问题标题】:split the statement in a excel file column using a specific keyword使用特定关键字拆分 Excel 文件列中的语句
【发布时间】:2017-01-05 07:40:23
【问题描述】:

我有一个包含多列数据的 excel 文件。我需要从文件中选择一列,并使用单元格中的特定关键字分隔该列的每个单元格中的数据。 每个单元格的关键字都相同

现在我想做的是,我想将每个字母与单元格分开,并给它们一个如下图所示的标题

【问题讨论】:

  • 您能否提供一个电子表格结构的示例?
  • 到目前为止您尝试过什么?一旦你确定了有问题的细胞,你想做什么?将它们复制到其他地方?对它们进行排序?我建议您编辑您的答案,提供有关您要实现的目标的更多详细信息。
  • @Daniel 我已经更新了问题,请看一下并给我一些想法。

标签: excel vba


【解决方案1】:

下面的 VBA 代码应该可以解决问题:

Option Explicit

Public Sub MainSub()

Dim arr As Variant
Dim srcRow As Long, destRow As Long
Dim wsSrc As Worksheet, wsDest As Worksheet

Set wsSrc = ThisWorkbook.Worksheets("Sheet1")
Set wsDest = ThisWorkbook.Worksheets.Add(Before:=wsSrc)

wsDest.Cells(1, 1).Value2 = "Letter"
wsDest.Cells(1, 2).Value2 = "Value"
destRow = 2

For srcRow = 1 To wsSrc.Cells(wsSrc.Rows.Count, "A").End(xlUp).Row
    If InStr(1, wsSrc.Cells(srcRow, 1).Value2, "half:", vbTextCompare) Then
        arr = Split(wsSrc.Cells(srcRow, 1).Value2, "half:")(0)
        arr = Split(arr, "/")
        destRow = WriteToDest(arr, "FULL", destRow, wsDest)
        arr = Split(wsSrc.Cells(srcRow, 1).Value2, "half:")(1)
        arr = Split(arr, "/")
        destRow = WriteToDest(arr, "HALF", destRow, wsDest)
    Else
        arr = Split(wsSrc.Cells(srcRow, 1).Value2, "/")
        destRow = WriteToDest(arr, "FULL", destRow, wsDest)
    End If
Next srcRow

End Sub

Private Function WriteToDest(arr As Variant, HalfOrFull As String, destRow As Long, wsDest As Worksheet) As Long

Dim element As Long

For element = LBound(arr) To UBound(arr)
    If Trim(arr(element)) <> vbNullString Then
        wsDest.Cells(destRow, 1).Value2 = UCase(Trim(arr(element)))
        wsDest.Cells(destRow, 2).Value2 = "FULL"
        destRow = destRow + 1
    End If
Next element

WriteToDest = destRow

End Function

只需将其全部复制到一个空模块中,并将Set wsSrc = ThisWorkbook.Worksheets("Sheet1")中的工作表名称调整为数据所在工作表的实际名称即可。

然后,上面的代码将插入一个新工作表并按照上面帖子中的描述处理/输出数据。

【讨论】:

  • 谢谢@Ralph。它有效,但我想知道如果我想选择第二列而不是第一列,我需要做哪些更改。
  • @Vinzy 你应该注意这个网站不是免费的代码编写服务。无论如何我帮助你的事实是因为我有一点空闲时间并想帮助你开始。不要习惯这个。这是非常罕见的,很可能甚至没有得到很好的重视。因此,第一步,我建议您遵循本网站的一般规则和accept this answer(如果它解决了您的问题,如上所述)。这将向该站点上的其他用户表明此问题已解决,不再需要他们关注。
  • 之后,我建议您开始仔细阅读代码并尝试理解它(拥有它)。请注意,代码中的蓝色单词是关键字。您可以突出显示它们,然后按F1 以获取有关这些词的帮助(以了解它们的作用)。此外,您可能需要阅读此内容以了解 VBA 的基本概念:homeandlearn.org 之后,您应该能够理解代码并自行调整以适应任何即将出现的需求。不过,如果您再次遇到问题,请不要犹豫(带着您新获得的知识)回来寻求更多帮助。
  • 我会仔细阅读代码,如果我有任何新问题会回来。
猜你喜欢
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多