Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование информации из столбца А в столбец B - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование информации из столбца А в столбец B (Макросы/Sub)
Копирование информации из столбца А в столбец B
WolFoX Дата: Вторник, 27.09.2016, 10:49 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!

Столкнулись с такой проблемой - макрос, при попытке задать ему действия копирования теста ячейки из столбца А в столбец B при условии пустой ячейки в B будет копировать только единожды заданный диапазон. Если же содержание таблица длиннее, и скопировать уже нужно будет не только диапазон, к примеру, с 1 строки по 21, но и с 22 по 70, то он их уже не будет трогать. Каким образов прописать условие в VBA, чтобы при наличии пустой ячейки значение копировалось из нужного столбца этой же строки? При этом само значение, скопированное в "пустоту", будет меняться в дальнейшем и не должно повлиять на "бывшую пустую" ячейку.

В примере нужно, чтобы в пустые ячейки столба L (услуга) копировались значения ячеек столбца G (сервис).
К сообщению приложен файл: __Service_Desk.xls(29Kb)


Сообщение отредактировал WolFoX - Вторник, 27.09.2016, 10:50
 
Ответить
СообщениеЗдравствуйте!

Столкнулись с такой проблемой - макрос, при попытке задать ему действия копирования теста ячейки из столбца А в столбец B при условии пустой ячейки в B будет копировать только единожды заданный диапазон. Если же содержание таблица длиннее, и скопировать уже нужно будет не только диапазон, к примеру, с 1 строки по 21, но и с 22 по 70, то он их уже не будет трогать. Каким образов прописать условие в VBA, чтобы при наличии пустой ячейки значение копировалось из нужного столбца этой же строки? При этом само значение, скопированное в "пустоту", будет меняться в дальнейшем и не должно повлиять на "бывшую пустую" ячейку.

В примере нужно, чтобы в пустые ячейки столба L (услуга) копировались значения ячеек столбца G (сервис).

Автор - WolFoX
Дата добавления - 27.09.2016 в 10:49
_Boroda_ Дата: Вторник, 27.09.2016, 11:02 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9367
Репутация: 3940 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub tt()
    r1_ = Range("C" & Rows.Count).End(3).Row
    For i = 2 To r1_
        If Range("H" & i) = "" Then
            Range("H" & i) = Range("C" & i).Value
        End If
    Next i
End Sub
[/vba]
К сожалению, у Вас "пустые" ячейки в столбце Н не совсем пустые (СЧЁТЗ(H2:H12) дает 11 вместо 5), иначе можно было бы проще сделать.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub tt()
    r1_ = Range("C" & Rows.Count).End(3).Row
    For i = 2 To r1_
        If Range("H" & i) = "" Then
            Range("H" & i) = Range("C" & i).Value
        End If
    Next i
End Sub
[/vba]
К сожалению, у Вас "пустые" ячейки в столбце Н не совсем пустые (СЧЁТЗ(H2:H12) дает 11 вместо 5), иначе можно было бы проще сделать.

Автор - _Boroda_
Дата добавления - 27.09.2016 в 11:02
Karataev Дата: Вторник, 27.09.2016, 11:02 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 641
Репутация: 226 ±
Замечаний: 0% ±

Excel
[vba]
Код
Sub Заполнить_H()
    
    Dim arrC(), arrH(), lr As Long, i As Long
    
    lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    arrC() = Range("C2:C" & lr).Value
    arrH() = Range("H2:H" & lr).Value
    
    For i = 1 To UBound(arrH)
        If arrH(i, 1) = Empty Then arrH(i, 1) = arrC(i, 1)
    Next
    
    Range("H2").Resize(UBound(arrH)).Value = arrH()
    
End Sub
[/vba]


 
Ответить
Сообщение[vba]
Код
Sub Заполнить_H()
    
    Dim arrC(), arrH(), lr As Long, i As Long
    
    lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    arrC() = Range("C2:C" & lr).Value
    arrH() = Range("H2:H" & lr).Value
    
    For i = 1 To UBound(arrH)
        If arrH(i, 1) = Empty Then arrH(i, 1) = arrC(i, 1)
    Next
    
    Range("H2").Resize(UBound(arrH)).Value = arrH()
    
End Sub
[/vba]

Автор - Karataev
Дата добавления - 27.09.2016 в 11:02
WolFoX Дата: Вторник, 27.09.2016, 11:11 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Оба варианта работают на ура :)
Искренне благодарю!
Тему можно закрывать.


Сообщение отредактировал WolFoX - Вторник, 27.09.2016, 11:11
 
Ответить
СообщениеОба варианта работают на ура :)
Искренне благодарю!
Тему можно закрывать.

Автор - WolFoX
Дата добавления - 27.09.2016 в 11:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование информации из столбца А в столбец B (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!