繁体   English   中英

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

[英]Excel VBA - If cells is part of merged cells pass the value?

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

如您所见,单元格A1-A15被合并了,在B1中我在B2中写了= A1我做了= A2,所以我想要实现的是每当我在某个位置分配了属于合并后的单元格的一部分时(A1-A15 )'test'值已通过,因此如果我写= A1或= A15或= A10则没有区别

我将不胜感激任何建议。

您可以使用If Range("A1").MergeCells = True来检测某个单元格是否为合并单元格的一部分。

让你在你有行数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

在B1中

=INDEX(A:A, MATCH("zzz", A$1:A1))

填写或抄下。

在此处输入图片说明

我想要实现的是,每当我在某个位置分配了合并单元格(A1-A15)的一部分的单元格时,都会传递'test'值,因此如果我写= A1或= A15或= A10不会有任何区别

您想要完成的任务并非易事。 您可以使用VBA代码来做到这一点,该代码每次键入内容时都会进行检查, 但这并不值得。 您在这里得到的另一个答案是值得的。

您无法做的事情是因为Excel工作方式很怪异。 假设您合并了单元格A1:A15 该值始终是合并区域的第一个像元(在这种情况下为A1 )。 因此,当您引用合并区域内的一个单元格时,除非它是第一个单元格,否则它将始终具有0值(空白单元格)。

所以我的建议是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM