Excel VBA – Если ячейки являются частью объединенных ячеек, передают значение?

Vba
Вопрос: У меня возникли проблемы с подготовкой макроса, который поможет мне передать значение другой ячейке, если указанная ячейка является частью объединенных ячеек. Как вы можете видеть, ячейки A1-A15 объединены, в B1 я написал = A1 в B2, я сделал = A2, поэтому я хочу добиться того, что всякий раз, когда я назначаю где-то ячейку, которая

Вопрос:

У меня возникли проблемы с подготовкой макроса, который поможет мне передать значение другой ячейке, если указанная ячейка является частью объединенных ячеек. Issue

Как вы можете видеть, ячейки A1-A15 объединены, в B1 я написал = A1 в B2, я сделал = A2, поэтому я хочу добиться того, что всякий раз, когда я назначаю где-то ячейку, которая является частью объединенных ячеек (A1-A15 ) передается значение “test”, поэтому нет разницы, если я пишу = A1 или = A15 или = A10

Буду признателен за любую помощь совета.

Ответ №1

Вы можете определить, является ли ячейка частью Объединенной ячейки с использованием 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 Ответ №2

В B1,

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

Заполните или скопируйте.

Ответ №3

что я хочу достичь, так это то, что всякий раз, когда я назначаю ячейку, которая является частью объединенных ячеек (A1-A15), передается значение “test”, поэтому нет разницы, если я пишу = A1 или = A15 или = A10

То, что вы хотите выполнить, не может быть сделано легко. Вы можете сделать это с помощью кода VBA, который проверяет каждый раз, когда вы вводите что-то, но этого не стоит. Другой ответ, который вы получили, стоит того.

То, что вы хотите сделать, невозможно, потому что Excel работает странным образом. Скажем, у вас есть ячейки A1:A15. Значение ВСЕГДА в первой ячейке объединенной области (в данном случае в A1). Поэтому, когда вы ссылаетесь на ячейку внутри объединенной области, она всегда будет иметь значение 0 (пустую ячейку), если только она не является первой.

Поэтому мой совет:

  1. Используйте один из других ответов, потому что оба они действительно полезны
  2. Если вы настаиваете на использовании обычных формул, тогда вместо ввода =A1 попробуйте с абсолютными ссылками, try =$A$1. Если вы нажмете и перетащите, эта формула будет работать для вас, чтобы завершить смежные ячейки в объединенную область.
  3. Я настаиваю, используйте один из других ответов.
Оцените статью
Добавить комментарий