合并一列中的多行,由其他列中的非空行数据分隔

时间:2017-10-27 22:16:33

标签: sql excel ms-access

我有一张像这样的桌子,因为所有不必要的空白单元格而非常混乱。我已经删除了完全空白的行,但现在我就是这部分了。请原谅我对这个过程不熟悉。我搜索过,但我的大部分结果都涉及购买工具。

话虽如此,如果其中任何一个能够完成以下任务,我愿意使用Excel,Access或SQL(SSMS)。

如果您的解决方案使用Excel,Access或VBA,请提供详尽的指导。

Row   Unique ID                         Text
__________________________________________________________________
1     555                               The Quick Brown
2                                       Fox Jumped
3                                       Over The Lazy Dog
4     321                               Doe Re Me
5                                       Fa So La
6                                       Ti Doe

我想要尝试获得的最终产品看起来像这样(注意#行)。话虽如此,我并不过分关注每个文本框中的换行符,如果没有别的办法,它可能都是一行:

Row   Unique ID                         Text
__________________________________________________________________
1     555                               The Quick Brown
                                        Fox Jumped
                                        Over The Lazy Dog
2     321                               Doe Re Me
                                        Fa So La
                                        Ti Doe

我基本上希望将“text”行合并为唯一ID,然后当它识别出新的唯一ID时,它将合并相应的文本单元格,依此类推。

4 个答案:

答案 0 :(得分:0)

可能有一个更简单的解决方案,但这是我能想到的,

步骤1:选择A列,并在特殊情况下选择所有空白单元格并写入公式栏= A2,该栏号应填充所有带ID的空单元格。

enter image description here

步骤2:在单元格C2中写下该公式= IF(A2<> A1,B2,C1& CHAR(10)& B2)并根据需要拖动。

enter image description here

步骤3:将该公式写入单元格D2 = IF(A2<> A3,1,“”)并根据需要拖动。 enter image description here

步骤4:在D列中使用1过滤值并应用换行文本。

enter image description here

答案 1 :(得分:0)

在Access中创建一个简单的报告。

对于持有Row的控件(TextBox),选择Properties,并将 Hide Duplicates 设置为:Yes。

答案 2 :(得分:0)

您可以使用VBA代码根据文本列

中的值合并单元格

1。)添加一个新列并应用公式= A1并拖放到第#6行

2.)在VBEditor中,在循环中使用以下代码

if Range("C" & i).Value = "0" Then
Range("A" & i - 1, "A" & i).Select
With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
End With
Application.DisplayAlerts = False
Selection.Merge
        Application.DisplayAlerts = True end if    

答案 3 :(得分:0)

Click for excel image here @Mitchell 用公式设置列D,= B1,= B2,= B3 ... = B6和 在vbe编辑器中使用以下代码。

Sub check()
Dim sht As Worksheet
Dim j As Integer
Set sht = ThisWorkbook.Worksheets("Sheet1")
Sheets("Sheet1").Select
 j = 0
For i = 1 To 6

If Range("D" & i).Value = "0" Then

Range("A" & i - 1, "A" & i).Select
With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
End With

Range("B" & i - 1, "B" & i).Select
With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
End With

Application.DisplayAlerts = False
Selection.Merge
        Application.DisplayAlerts = True

        Else
        j = j + 1
          Range("A" & i).Select
    ActiveCell.FormulaR1C1 = j
        End If


Next i


MsgBox "Done"
End Sub