9

我创建了一个包含合并单元格的工作表,但合并单元格的值仅存储在第一个单元格中。无论如何,为了在每个单元格中保持相同的值,我需要它作为我使用的公式。谢谢!

4

8 回答 8

7

在 Excel 2003 中,这个宏完成了这项工作:

Public Sub UnmergeAndFill()
    With Selection
        If .MergeCells Then
            .MergeCells = False
            Selection.Cells(1, 1).Copy
            ActiveSheet.Paste 'Or PasteSpecial xlPasteFormulasAndNumberFormats
        End If
    End With
End Sub

通过以下方式创建宏

  1. Alt-F11, Ctrl-R, menu Insert/Module,粘贴代码;
  2. 或者Alt-F8,输入新名称(UnmergeAndFill例如),单击MakeCreate?不知道英文按钮文本

按 Alt-F8 调用宏,选择它,Run。或者将其映射到一个键

于 2011-06-24T08:11:24.303 回答
6

无论您选择哪一个,您都可以使用直接给出合并单元格值的自定义 VBA 函数。在这种情况下,没有必要复制这些值。

  1. 切换到 VBA 视图 (Alt-F11)
  2. 通过 Insert > Module 创建一个新模块
  3. 在您的项目中,浏览到新模块(您可能希望通过资源管理器下方的 (name) 属性为其命名)
  4. 复制模块中的以下代码(粘贴ThisWorkbook中的代码将不起作用)

代码:

Option Explicit

Function GetMergedValue(location As Range)
    If location.MergeCells = True Then
        GetMergedValue = location.MergeArea(1, 1)
    Else
        GetMergedValue = location
    End If
End Function
  1. 您现在可以在 excel 中使用公式

代码:

=GetMergedValue(A1)

其中 A1 是合并单元格的一部分。

于 2016-05-23T08:41:18.160 回答
5

我知道这是一个相当古老的问题,但这是我在寻找答案时首先到达的地方,而接受的答案根本没有帮助。但是,我确实在 MrExcel 上发现了一个很好的答案,我认为值得把它放在这个线程上,以便其他人在谷歌上搜索答案:
http ://www.mrexcel.com/forum/general-excel-discussion-other -questions/487941-data-multiple-cells-within-merged-cell-possible.html

为了节省查找链接,答案非常简单;如果您使用 Excel 格式刷合并单元格,而不是合并单元格,它会保留合并单元格“基础”的数据/公式。您只需要在其他地方以正确的格式创建一个临时合并的单元格块,以用作格式刷的模板。您可以在之后删除它们。但是,需要注意的一件事是,像这样的“隐藏”数据可能会成为粗心的陷阱,因为编辑可见单元格不会更改不可见单元格。

于 2014-12-04T21:09:29.277 回答
2

您可以创建一个新列(或行)并在第一个单元格中应用此公式并将其向下拖动:

我想在 A 列中您已合并单元格(例如 A1:A3 和 A5:A8 已合并)。

  1. 在 A 列之前插入一列

  2. 在 A1 类型中:

    =B1
    
  3. 在 A2 中复制以下公式:

    =IF(B2="",A1,B2)
    
  4. 把你在A2中输入的公式往下拉

在您的公式中使用新创建的列,使用后您可以隐藏它。

于 2012-08-21T08:02:57.153 回答
0

您不能将实际值存储在其他地方吗?而不是合并的单元格?是的,使用公式在合并单元格上显示值。

于 2011-06-24T06:37:48.517 回答
0

假设“A”列已合并单元格 - 将其放入 B1 并复制以填充该列的其余部分:

=IF(ISBLANK(A1);OFFSET(B1;-1;0);A1)

它检查左边的单元格是否有值,如果有则返回其值,如果没有,则从上部单元格中获取值。

请注意,它不适用于空单元格。首先用独特的东西填充“A”列中的空单元格,例如“(空)”,然后在填充“B”列后用“A”和“B”中的空值替换它。

于 2016-05-11T06:29:12.523 回答
0

我改进了 sehe 的宏,可以根据您的选择执行尽可能多的合并单元格。

代码:

Public Sub UnmergeAndFillMultiple()
    Dim w As Range, m As Range, n As Range
    For Each w In Selection.Cells
        If w.MergeCells Then
            Set n = w.MergeArea.Cells(1, 1)
            Set m = w.MergeArea
            w.MergeCells = False
            n.Copy
            m.PasteSpecial
        End If
    Next
End Sub
于 2018-04-04T18:12:18.643 回答
-1
 Dim rowcnt As Long, i As Long
    rowcnt = Cells(Rows.Count, "A").End(xlUp).Row
    For i = rowcnt To 3 Step -1
        With Cells(i, 1)
            If .Value = Cells(i - 1, 1).Value Then
                .Font.ColorIndex = 9
            End If
        End With
    Next i
于 2019-04-25T12:38:32.873 回答