gpt4 book ai didi

excel - 合并 Excel 中的单元格而不丢失数据

转载 作者:行者123 更新时间:2023-12-02 20:31:00 24 4
gpt4 key购买 nike

首先很抱歉为此创建了一个新线程,但我无法在现有线程中发表评论。

我正在尝试合并许多单元格,就像 this 中那样线程,但我对编码尤其是 excel/VBA 有点陌生,所以我无法让它工作。我有相同的场景(除了我没有任何空行),所以我只是尝试使用现有线程中的代码,但并不真正理解语法:

Sub mergecolumn()

Dim cnt As Integer
Dim rng As Range
Dim str As String

For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
cnt = Cells(i, 1).MergeArea.Count
Set rng = Range(Cells(i, 2), Cells(i - cnt + 1, 2))

For Each cl In rng
If Not IsEmpty(cl) Then str = str + vbNewLine + cl
Next
If str <> "" Then str = Right(str, Len(str) - 2)

Application.DisplayAlerts = False
rng.Merge
rng = str
Application.DisplayAlerts = True

str = ""
i = i - cnt + 1
Next i

End Sub

我尝试以不同的方式运行宏,标记多列、标记多行以及仅标记某些区域,但我总是得到:

运行时错误“13”:
类型不匹配

当我进入调试屏幕时,它被标记为:

str = str + vbNewLine + cl

我通过 Developer-ribbon->Visual Basic->Insert->Module 添加了宏,然后将代码粘贴到此处并保存。

预先感谢您的帮助
//乔金姆

最佳答案

这里有两个版本的代码。

VER 1(不忽略空白单元格)

'~~> For Group MERGING (Merge Cells and Keep All text)
Public Sub Sample()
On Error GoTo ErrMergeAll

Application.DisplayAlerts = False

Dim Cl As Range
Dim strTemp As String

'~~> Collect values from all the cells and separate them with spaces
For Each Cl In Selection
If Len(Trim(strTemp)) = 0 Then
strTemp = strTemp & Cl.Value
Else
strTemp = strTemp & vbNewLine & Cl.Value
End If
Next

strTemp = Trim(strTemp)

'~~> Merging of cells
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = False
End With
Selection.Merge

'~~> Set new value of the range
Selection.Value = strTemp

Application.DisplayAlerts = True
Exit Sub

ErrMergeAll:
MsgBox Err.Description, vbInformation
Application.DisplayAlerts = True
End Sub

VER 2(忽略空白单元格)

'~~> For Group MERGING (Merge Cells and Keep All text)
Public Sub Sample()
On Error GoTo ErrMergeAll

Application.DisplayAlerts = False

Dim Cl As Range
Dim strTemp As String

'~~> Collect values from all the cells and separate them with spaces
For Each Cl In Selection
If Len(Trim(Cl.Value)) <> 0 Then
If Len(Trim(strTemp)) = 0 Then
strTemp = strTemp & Cl.Value
Else
strTemp = strTemp & vbNewLine & Cl.Value
End If
End If
Next

strTemp = Trim(strTemp)

'~~> Merging of cells
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.MergeCells = False
End With
Selection.Merge

'~~> Set new value of the range
Selection.Value = strTemp

Application.DisplayAlerts = True
Exit Sub

ErrMergeAll:
MsgBox Err.Description, vbInformation
Application.DisplayAlerts = True
End Sub

屏幕截图

enter image description here

关于excel - 合并 Excel 中的单元格而不丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com