如何在 Excel 2010 中提取第 N 次和第 N+1 次出现之间的字符的字符串?

如何在 Excel 2010 中提取第 N 次和第 N+1 次出现之间的字符的字符串?

我有一个电子表格,其中有一列包含一个或多个数据库名称的列表。不幸的是,修改此报告的周转时间很长。所以我需要处理数据。

该列包含单个单元格中特定于一条记录的所有数据库,以逗号分隔。我需要将此列表分开,并将每个数据库放在单独的单元格中。重要提示:我不是允许在此解决方案中使用 VBA 宏/代码。

第一个很简单:找到第一个逗号,返回逗号左边的所有内容。接下来的几个才是我最头疼的。

我创建了一个列来计算单元格中有多少个逗号,这样我就可以确定是否列出了多个数据库。

我该如何应对接下来的问题?

答案1

这不是工作表函数答案,但它也不使用 VBA。

您是否尝试过使用“文本分列”功能?在 Excel 2010 中,它是数据功能区上的按钮之一。

  1. 选择您的列。
  2. 单击“文本分列”按钮。
  3. 在向导的第一页上,选择“分隔”,然后选择下一步。
  4. 在第二页,勾选“逗号”以将其选为分隔符。您可能需要根据数据的格式勾选/取消勾选其他一些选项。
  5. 此时您可能可以单击“完成”将数据拆分为列,但您可能需要转到下一页来更改列格式。

答案2

使用样本数据A1, 在B1进入:

=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

并复制:

在此处输入图片描述

编辑#1:

如果我们从列中的材料开始A像这样:

在此处输入图片描述

并运行这个简短的宏:

Sub dural()
   Dim N As Long, i As Long, K As Long
   N = Cells(Rows.Count, "A").End(xlUp).Row
   K = 1

   For i = 2 To N
      v = Cells(i, "A").Value
      ary = Split(Cells(i, "B").Value, ",")
      For Each a In ary
         Cells(K, "C").Value = v
         Cells(K, "D").Value = a
         K = K + 1
      Next a
   Next i
End Sub

我们将得到这样的结果:

在此处输入图片描述

相关内容