Помогите, пожалуйста, разобраться с формулой. Цель: перенести данные из столбца A на другой лист, если значения в соседнем столбце имеют жирный шрифт.
Доброе время суток!
Помогите, пожалуйста, разобраться с формулой. Цель: перенести данные из столбца A на другой лист, если значения в соседнем столбце имеют жирный шрифт.ellison_shiny
Попробовал сделать через макрос. Возникла одна проблема. Как сделать так, чтобы пустые ячейки не учитывались, а пропускались при работе макроса?
Попробовал сделать через макрос. Возникла одна проблема. Как сделать так, чтобы пустые ячейки не учитывались, а пропускались при работе макроса?ellison_shiny
Sub CopyCell()
Application.DisplayAlerts = False
a = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row
Sheets("Лист2").Rows("1:" & a).Delete
b = Sheets("Лист1").Cells(Rows.Count, "b").End(xlUp).Row For c = 2To b
d = Sheets("Лист1").Range("b" & c).Value
e = Sheets("Лист1").Range("b" & c).Font.Bold If d <> ""And e Then
f = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row
g = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Value
h = 1 If g = ""Then h = 0
Sheets("Лист1").Range("b" & c).Copy Sheets("Лист2").Range("a" & f + h) EndIf Next
Application.ScreenUpdating = True EndSub
без удаления/создания листа2
Sub CopyCell()
Application.DisplayAlerts = False
a = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row
Sheets("Лист2").Rows("1:" & a).Delete
b = Sheets("Лист1").Cells(Rows.Count, "b").End(xlUp).Row For c = 2To b
d = Sheets("Лист1").Range("b" & c).Value
e = Sheets("Лист1").Range("b" & c).Font.Bold If d <> ""And e Then
f = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row
g = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Value
h = 1 If g = ""Then h = 0
Sheets("Лист1").Range("b" & c).Copy Sheets("Лист2").Range("a" & f + h) EndIf Next
Application.ScreenUpdating = True EndSub
Nic70y, я имел ввиду, чтобы жирный текст копировался и со столбца A и со столбца B. Попробовал модифицировать макрос (закомментировал строчки кода для себя).
Sub CopyCell()
Application.DisplayAlerts = False
a = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце А на листе 2
Sheets("Лист2").Rows("1:" & a).Delete ' удаляем данные с листа 2
b = Sheets("Лист1").Cells(Rows.Count, "b").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце B на листе 1 For c = 2To b ' счетчик (от 2 строчки до последней заполненной в столбце B на листе 1)
d1 = Sheets("Лист1").Range("a" & c).Value ' получаем значения столбца A на листе 1
d2 = Sheets("Лист1").Range("b" & c).Value ' получаем значения столбца B на листе 1
e1 = Sheets("Лист1").Range("a" & c).Font.Bold ' получаем свойство ("полужирный текст") столбца A на листе 1
e2 = Sheets("Лист1").Range("b" & c).Font.Bold ' получаем свойство ("полужирный текст") столбца B на листе 1 If d1 <> ""And e1 Then' если значения столбца A на листе 1 непустые и имеют свойство "полужирный текст", тогда:
f1 = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце A на листе 2
g1 = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Value ' определяем значение последней заполненной ячейки в столбце A на листе 2
h = 1' присваиваем h значение 1 If g1 = ""Then h = 0' если ячейка в столбце B на листе 2 пустая, тогда присваиваем h значение 0
Sheets("Лист1").Range("a" & c).Copy Sheets("Лист2").Range("a" & f1 + h) ' копируем значения столбца A на листе 1 в столбец A на листе 2 EndIf If d2 <> ""And e2 Then' если значения столбца B на листе 1 непустые и имеют свойство "полужирный текст", тогда:
f2 = Sheets("Лист2").Cells(Rows.Count, "b").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце B на листе 2
g2 = Sheets("Лист2").Cells(Rows.Count, "b").End(xlUp).Value ' определяем значение последней заполненной ячейки в столбце B на листе 2
h = 1' присваиваем h значение 1 If g2 = ""Then h = 0' если ячейка в столбце B на листе 2 пустая, тогда присваиваем h значение 0
Sheets("Лист1").Range("b" & c).Copy Sheets("Лист2").Range("b" & f2 + h) ' копируем значения столбца B на листе 1 в столбец B на листе 2 EndIf Next
Application.ScreenUpdating = True EndSub
Nic70y, я имел ввиду, чтобы жирный текст копировался и со столбца A и со столбца B. Попробовал модифицировать макрос (закомментировал строчки кода для себя).
Sub CopyCell()
Application.DisplayAlerts = False
a = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце А на листе 2
Sheets("Лист2").Rows("1:" & a).Delete ' удаляем данные с листа 2
b = Sheets("Лист1").Cells(Rows.Count, "b").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце B на листе 1 For c = 2To b ' счетчик (от 2 строчки до последней заполненной в столбце B на листе 1)
d1 = Sheets("Лист1").Range("a" & c).Value ' получаем значения столбца A на листе 1
d2 = Sheets("Лист1").Range("b" & c).Value ' получаем значения столбца B на листе 1
e1 = Sheets("Лист1").Range("a" & c).Font.Bold ' получаем свойство ("полужирный текст") столбца A на листе 1
e2 = Sheets("Лист1").Range("b" & c).Font.Bold ' получаем свойство ("полужирный текст") столбца B на листе 1 If d1 <> ""And e1 Then' если значения столбца A на листе 1 непустые и имеют свойство "полужирный текст", тогда:
f1 = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце A на листе 2
g1 = Sheets("Лист2").Cells(Rows.Count, "a").End(xlUp).Value ' определяем значение последней заполненной ячейки в столбце A на листе 2
h = 1' присваиваем h значение 1 If g1 = ""Then h = 0' если ячейка в столбце B на листе 2 пустая, тогда присваиваем h значение 0
Sheets("Лист1").Range("a" & c).Copy Sheets("Лист2").Range("a" & f1 + h) ' копируем значения столбца A на листе 1 в столбец A на листе 2 EndIf If d2 <> ""And e2 Then' если значения столбца B на листе 1 непустые и имеют свойство "полужирный текст", тогда:
f2 = Sheets("Лист2").Cells(Rows.Count, "b").End(xlUp).Row ' определяем последнюю заполненную ячейку в столбце B на листе 2
g2 = Sheets("Лист2").Cells(Rows.Count, "b").End(xlUp).Value ' определяем значение последней заполненной ячейки в столбце B на листе 2
h = 1' присваиваем h значение 1 If g2 = ""Then h = 0' если ячейка в столбце B на листе 2 пустая, тогда присваиваем h значение 0
Sheets("Лист1").Range("b" & c).Copy Sheets("Лист2").Range("b" & f2 + h) ' копируем значения столбца B на листе 1 в столбец B на листе 2 EndIf Next
Application.ScreenUpdating = True EndSub