Похожие вопросы

Автоматический импорт макроса в Excel и его запуск
Макрос для помощи надстрочному символу последнего символа множества строк в одном столбце
Удаление всей строки с помощью макроса в Excel
Использование динамических ссылок на внешние книги в Excel
Автоматическое изменение размера изображений (увеличение размера снимка экрана) в microsoft word
Макрос Word 2007 пропал
Как остановить Excel от открытия второго пустого окна при открытии файла из Проводника?
TeXstudio выбрать всю строку
Лучший способ предотвратить запуск вредоносного / вирусного макроса на ПК
Как скопировать файл в сетевую папку под OS X и Word 2004/2011
Объединение строк в Excel
Как решить проблему несоответствия типов ошибок среды выполнения 13 в excel VBA при очистке содержимого?
Легко вводить символы Юникода с помощью AutoHotKey?
VBA для перемещения данных из одного столбца в другой
Формула Excel 2010: Поиск динамического столбца на основе строкового значения, а затем количество # " 0 " в этом столбце

Как применить формулу к ячейкам со значением

Я использую vba и сумел применить приведенный ниже код, чтобы добавить " A " в ячейки в каждом столбце (X, AK, AW) значение.

ActiveSheet.Range("X2:X24").Select
For Each X In Selection
If X.Value <> "" Then X.Value = X.Value & "A"
Next
ActiveSheet.Range("AK2:AK24").Select
For Each AK In Selection
If AK.Value <> "" Then AK.Value = AK.Value & "A"
Next
ActiveSheet.Range("AW2:AW24").Select
For Each AW In Selection
If AW.Value <> "" Then AW.Value = AW.Value & "A"

однако, теперь я пытаюсь применить приведенные ниже формулы к столбцам Y, Z, AA & AB. Я только хочу, чтобы это применялось от 2-й ячейки вниз и только для ячеек, которые имеют значение. Так со 2, если ячейка пуста. Я не могу заставить его работать!

=TODAY()-1     

=TEXT(TODAY(),"YYYYMM")

=TEXT(TODAY(),"MMM YYYY")
5
задан Tom
источник

1 ответов

это динамически определяет последнюю использованную строку с данными в col Y

копирует диапазон A2: BA+lastRow в массив, зацикливает каждую строку и присваивает каждой формуле каждый столбец (если ячейка не пуста). Затем помещает массив обратно в диапазон


Option Explicit

Public Sub SetFormulasToNonEmptyCells()

  Dim ur As Range, arr As Variant, r As Long

  'The selected columns start at A (col 1) to BA (col 53)
  Set ur = Sheet1.Range("A2:BA" & Sheet1.Cells(Sheet1.Rows.Count, "Y").End(xlUp).Row)

  arr = ur
  For r = 1 To UBound(arr)
    If Len(Trim$(arr(r, 10))) > 0 Then arr(r, 10) = "=TODAY()-1"                  'J  (10)
    If Len(Trim$(arr(r, 22))) > 0 Then arr(r, 22) = "-1"                          'V  (22)
    If Len(Trim$(arr(r, 25))) > 0 Then arr(r, 25) = "1"                           'Y  (25)
    If Len(Trim$(arr(r, 26))) > 0 Then arr(r, 26) = "1"                           'X  (26)
    If Len(Trim$(arr(r, 27))) > 0 Then arr(r, 27) = "=TEXT(TODAY(),""YYYYMM"")"   'AA (27)
    If Len(Trim$(arr(r, 28))) > 0 Then arr(r, 28) = "=TEXT(TODAY(),""MMM YYYY"")" 'AB (28)
    If Len(Trim$(arr(r, 46))) > 0 Then arr(r, 46) = "-1"                          'AT (46)
  Next
  ur.Formula = arr
  ur.Columns(4).NumberFormat = "mmm yyyy" 'Use col #'s instead of letters
End Sub

0
отвечен paul bica 2018-04-12 15:45:06
источник

Другие вопросы macros microsoft-excel vba