合并2个Excel单元格的内容,保持字符格式完整(使用VBA)

时间:2010-02-03 14:46:11

标签: excel vba

正如标题所说:我尝试将2个单元格的内容合并到Excel中的第3个单元格中。有一个类似的问题here on SO,但这些解决方案不保持字符格式完整。例如,源单元格内容的部分格式为粗体和红色,其他部分是正常的。当我合并它们时

 Range("A3") = Range("A1") & Range("A2")

然后A1和A2的任何格式都会丢失。我需要的是保持格式完整的解决方案。这将是更大的VBA计划的一部分,所以我需要一个VBA解决方案,没有公式。 Excel版本是2002(XP)。

3 个答案:

答案 0 :(得分:3)

Doc,这是一个有趣的问题。我被自己难过,但看到了价值,所以经过一番搜索,这就是我找到的。从vbaexpress开始,我对单元格格式有了基本的了解,我在下面修改了它。

Sub Merge_Cells()
Dim iOS As Integer
Dim rngFrom1 As Range
Dim rngFrom2 As Range
Dim rngTo As Range
Dim lenFrom1 As Integer
Dim lenFrom2 As Integer

  Set rngFrom1 = Cells(1, 1)
  Set rngFrom2 = Cells(1, 2)
  Set rngTo = Cells(1, 3)
  lenFrom1 = rngFrom1.Characters.Count
  lenFrom2 = rngFrom2.Characters.Count

  rngTo.Value = rngFrom1.Text & rngFrom2.Text

  For iOS = 1 To lenFrom1
    With rngTo.Characters(iOS, 1).Font
      .Name = rngFrom1.Characters(iOS, 1).Font.Name
      .Bold = rngFrom1.Characters(iOS, 1).Font.Bold
      .Size = rngFrom1.Characters(iOS, 1).Font.Size
      .ColorIndex = rngFrom1.Characters(iOS, 1).Font.ColorIndex
    End With
  Next iOS
  For iOS = 1 To lenFrom2
    With rngTo.Characters(lenFrom1 + iOS, 1).Font
      .Name = rngFrom2.Characters(iOS, 1).Font.Name
      .Bold = rngFrom2.Characters(iOS, 1).Font.Bold
      .Size = rngFrom2.Characters(iOS, 1).Font.Size
      .ColorIndex = rngFrom2.Characters(iOS, 1).Font.ColorIndex
    End With
  Next iOS

End Sub

用你的特定细胞更换3个细胞()。也许有人可以找到一种更干净的方式,但是当我测试它时,它就像我理解你(和我)想要的那样有效 希望这会有所帮助...

答案 1 :(得分:1)

这是在黑暗中的一点点,但如果你能以某种方式编写一个执行以下操作的宏,它似乎可以很好地工作:

  1. 复制要合并的整个范围(例如A1:B200)。
  2. 打开一个新的Word文档。
  3. 粘贴(在Word中创建表格)。
  4. 选择表格。
  5. 使用空白分隔符(或任何您想要的内容)执行“转换为文本”。
  6. 复制生成的文字。
  7. 在Excel中粘贴到所需位置(例如C1)。
  8. 我知道您可以为Excel和Word编写VBA宏,但我怀疑您是否可以从Excel控制Word文档。您可能可以编写一个可以打开和控制两个文档的C#控制台应用程序。

答案 2 :(得分:0)

我知道没有办法直接这样做,但是将范围复制到新范围然后循环遍历原始范围的每个字符的interior属性并将属性复制到。这应该保留结果范围内每个字符的颜色,字体样式等。

家庭时间在召唤,所以我没有时间掀起一个例子,但我确信其他人可以根据需要进行编辑/回答。