簡體   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