Excel VBA - 如果单元格是合并单元格的一部分,则传递值?

时间:2018-03-16 08:55:57

标签: excel vba excel-vba

我在准备宏时会遇到一些麻烦,如果指定的单元格是合并单元格的一部分,它将帮助我将值传递给另一个单元格。 Issue

正如你所看到的,单元格A1-A15被合并,在B1中我写了= A1中的A1我做了= A2,所以我想要实现的是每当我指定某个单元格是合并单元格的一部分时( A1-A15)'test'值被传递,所以如果我写= A1或= A15或= A10

没有区别

我很感激任何建议的帮助。

3 个答案:

答案 0 :(得分:4)

您可以使用If Range("A1").MergeCells = True检测Cell是否属于合并单元格。

使用MergedArea获取Range("A" & i).MergeArea.Rows.Count中的行数。

以下代码中的更多解释。

<强> 代码

Option Explicit

Sub CheckifMergedCell()

Dim MergeRows As Long, i As Long

i = 1
While i < 100 ' 100 is just for example , change it later according to your needs

    If Range("A" & i).MergeCells = True Then
        MergeRows = Range("A" & i).MergeArea.Rows.Count ' number of merged cells
    Else ' not merged >> single row
        MergeRows = 1
    End If

    Range("B" & i).Resize(MergeRows, 1).Value = Range("A" & i).Value

    i = i + MergeRows
Wend

End Sub

答案 1 :(得分:2)

在B1中,

created_between(nil, nil)

填写或复制。

enter image description here

答案 2 :(得分:0)

我想要实现的是,无论何时我指定某个单元格,它是合并单元格的一部分(A1-A15),“&#39; test&#39;如果我写= A1或= A15或= A10

,则传递值,因此没有区别

您想要完成的任务不容易完成。您可以使用VBA代码执行此操作,每次键入内容时都会检查,但这不值得。您在这里得到的另一个答案是值得的。

您想要做的事情是不可能的,因为Excel以奇怪的方式工作。我们假设您已将单元格A1:A15合并。该值始终位于合并区域的第一个单元格中(在本例中为 A1 )。因此,当您引用合并区域内的单元格时,它将始终具有0值(空白单元格),除非它是第一个。

所以我的建议是:

  
      
  1. 使用其他1个答案,因为两者都非常有用
  2.   
  3. 如果您坚持使用普通公式,那么请尝试使用绝对引用,而不是键入=A1,尝试=$A$1。如果你点击和   拖动,该公式将适用于您完成相邻的单元格   合并区域。
  4.   
  5. 我坚持,使用其中一个答案。
  6.