【问题标题】:excel- group and concatenate cells (in varying number of rows) under each serial numberexcel-在每个序列号下分组和连接单元格(在不同的行数中)
【发布时间】:2014-10-03 12:58:28
【问题描述】:

我有一个如下所示的 excel 文件


1    word1     MEANING1.1          meaning1.1
               MEANING1.2

2    word2     MEANING2.1          meaning2.1
               MEANING2.2          meaning2.2
                                   meaning2.3

3    word3     MEANING3.1          meaning3.1

4    word4     MEANING4.1          meaning4.1
               MEANING4.2          meaning4.2
               MEANING4.3
               MEANING4.4       

我需要连接每个单词的含义,以获得如下所示的输出


1      word1      MEANING1.1,MEANING1.2   meaning1.1
2      word2      MEANING2.1,MEANING2.2   meaning2.1,meaning2.2,meaning2.3
3      word3      MEANING3.1              meaning3.1
4      word4      MEANING4.1,MEANING4.2...meaning4.1,meaning4.2

谁能帮我制定一个公式?

谢谢

【问题讨论】:

  • 是否可以使用公式 =CONCATENATE() 手动执行此操作?如果是这样,请查看 here 的描述。
  • 忘了补充,我的文件里有几千个这样的“单词”

标签: excel concatenation


【解决方案1】:

我碰巧已经有一个自定义函数。将此代码粘贴到工作簿的模块中:

Public Function ConcatenateRange(r As Range, Optional DeLim As String) As String
    Dim c As Range
    Dim str As String

    Application.Volatile True

    For Each c In r.Cells

        str = str & DeLim & c

    Next

    ConcatenateRange = str
End Function

然后在单元格中使用这个公式:

=ConcatenateRange("The range you want to combine", ",")

【讨论】:

  • 一个完美的简单修复:就在循环之后(NEXT 下方的一行),添加以下命令:str = Right(str, Len(str) - 1)。这样 DeLim 不会是第一个字符
  • 小修复 - 仅当 DeLim 不是空字符串时才应调用该命令:If (DeLim "") Then str = Right(str, Len(str) - 1)
【解决方案2】:

几个步骤。首先创建一个填充为单词的新列,以便始终填充。

D1 = A1
if(A2 = 0,D1,A2)
.
.
.

接下来创建另一个新列,其中包含有多少含义的数字计数。

E1 = 1
if(E2 = 0,E1+1,1)
.
.
.

接下来从上面创建 MEANING 列、含义和新词列的数据透视表。

使用数据透视表的边,使你得到 WORD, MEANING,其中数字列是 1;复制粘贴到新工作表 重复直到最大意义数;每次将它们复制到新列中 重复意义 使用连接函数以正确的格式将它们添加在一起。

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2015-11-04
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多