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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование нескольких ячеек по значению одной. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование нескольких ячеек по значению одной. (Макросы/Sub)
Копирование нескольких ячеек по значению одной.
Nic70y Дата: Четверг, 20.08.2015, 08:25 | Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 8760
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
    For Each c In Range(Cells(4, 3))
     If c <> "" Then
     c.Columns("A:K").Copy
[/vba]где Cells(4, 3) это столбец B.
скопировать нужно B:L, что бы это происходило я написал ("A:K"),
как бы я понял почему, в макросе столбец B первый и поэтому произошло смещение.
Все работает, все отлично,
но почему так ведь конкретно прописаны столбцы буквами?


ЮMoney 41001841029809
 
Ответить
Сообщение[vba]
Код
    For Each c In Range(Cells(4, 3))
     If c <> "" Then
     c.Columns("A:K").Copy
[/vba]где Cells(4, 3) это столбец B.
скопировать нужно B:L, что бы это происходило я написал ("A:K"),
как бы я понял почему, в макросе столбец B первый и поэтому произошло смещение.
Все работает, все отлично,
но почему так ведь конкретно прописаны столбцы буквами?

Автор - Nic70y
Дата добавления - 20.08.2015 в 08:25
Roman777 Дата: Четверг, 20.08.2015, 09:40 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Nic70y, Добрый день!
А как определена переменная "c", а то мне, вообще, не понятно что такое Range(Cells(4,3)), почему не Cells(4,3). Или "с" это диапазон какой-то?


Много чего не знаю!!!!
 
Ответить
СообщениеNic70y, Добрый день!
А как определена переменная "c", а то мне, вообще, не понятно что такое Range(Cells(4,3)), почему не Cells(4,3). Или "с" это диапазон какой-то?

Автор - Roman777
Дата добавления - 20.08.2015 в 09:40
Nic70y Дата: Четверг, 20.08.2015, 09:43 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 8760
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Range(Cells(4,3))
это ячейка C4 в которой при различных условиях, до работы этого макроса прописывается диапазон например B21:B72, это всегда столбец B


ЮMoney 41001841029809
 
Ответить
Сообщение
Range(Cells(4,3))
это ячейка C4 в которой при различных условиях, до работы этого макроса прописывается диапазон например B21:B72, это всегда столбец B

Автор - Nic70y
Дата добавления - 20.08.2015 в 09:43
AndreTM Дата: Четверг, 20.08.2015, 09:54 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
А я вот ничего не понял...
Cells(4,3) - это ячейка C4
Range(Cells(4,3)) - ладно, предположим, что в C4 текстом записан некий диапазон, например "B1:B3"
с - будет перебирать все ячейки этого диапазона B1:B3 (слева-направо сверху-вниз), т.е. B1, B2,..
c.Columns("A:K") - будет последовательно принимать значения B1:L1, B2:L2,.. потому что ты указываешь "первый-одиннадцатый столбец ОТ ЯЧЕЙКИ c", которая уже B1, B2 и т.д.

Я обычно, чтобы не путаться, в таких ситуациях использую сразу отсчет от перебираемых ячеек:
например, c.offset(0).resize(,11).copy


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Четверг, 20.08.2015, 10:06
 
Ответить
СообщениеА я вот ничего не понял...
Cells(4,3) - это ячейка C4
Range(Cells(4,3)) - ладно, предположим, что в C4 текстом записан некий диапазон, например "B1:B3"
с - будет перебирать все ячейки этого диапазона B1:B3 (слева-направо сверху-вниз), т.е. B1, B2,..
c.Columns("A:K") - будет последовательно принимать значения B1:L1, B2:L2,.. потому что ты указываешь "первый-одиннадцатый столбец ОТ ЯЧЕЙКИ c", которая уже B1, B2 и т.д.

Я обычно, чтобы не путаться, в таких ситуациях использую сразу отсчет от перебираемых ячеек:
например, c.offset(0).resize(,11).copy

Автор - AndreTM
Дата добавления - 20.08.2015 в 09:54
Nic70y Дата: Четверг, 20.08.2015, 09:57 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 8760
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
с - будет перебирать все ячейки этого диапазона B1:B3 (слева-направо сверху-вниз), т.е. B1, B2,..
все верно оно мне так и надо, да и все работает как надо. не пойму почему
так ведь конкретно прописаны столбцы буквами

вопроса как такового нет, просто интересно, что за фигня


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 20.08.2015, 09:59
 
Ответить
Сообщение
с - будет перебирать все ячейки этого диапазона B1:B3 (слева-направо сверху-вниз), т.е. B1, B2,..
все верно оно мне так и надо, да и все работает как надо. не пойму почему
так ведь конкретно прописаны столбцы буквами

вопроса как такового нет, просто интересно, что за фигня

Автор - Nic70y
Дата добавления - 20.08.2015 в 09:57
AndreTM Дата: Четверг, 20.08.2015, 10:05 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
так ведь конкретно прописаны столбцы буквами
так ведь конкретно указано "относительно ячейки", вот в чём дело.
c.Columns - это коллекция объекта c, а не листа.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
так ведь конкретно прописаны столбцы буквами
так ведь конкретно указано "относительно ячейки", вот в чём дело.
c.Columns - это коллекция объекта c, а не листа.

Автор - AndreTM
Дата добавления - 20.08.2015 в 10:05
Nic70y Дата: Четверг, 20.08.2015, 10:10 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8760
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
это коллекция объекта
буду знать, а то дошел до этого чисто на интуиции, а быть неграмотным неохота :)
спасибо


ЮMoney 41001841029809
 
Ответить
Сообщение
это коллекция объекта
буду знать, а то дошел до этого чисто на интуиции, а быть неграмотным неохота :)
спасибо

Автор - Nic70y
Дата добавления - 20.08.2015 в 10:10
_Boroda_ Дата: Четверг, 20.08.2015, 10:13 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
это ячейка C4 в которой при различных условиях, до работы этого макроса прописывается диапазон например B21:B72, это всегда столбец B

Ну, это непринципиально, главное, что это Range. Здесь дело в том, что как бы ты не обозначил, у тебя получится в итоге что-то типа
[vba]
Код
Range("B22").что-то
[/vba], где "что-то" - это или Range, или Cells, без разницы что, но считаться оно будет так, как если бы B22 являлась ячейкой А1. Я, если так пишу (редко бывает), то для наглядности представляю себе на листе наложенным другой лист, у которого левый верхний угол (ячейка А1) совпадает с левым верхним углом первого диапазона (В22).
А вообще, на мой взгляд, гораздо проще пользоваться Offset и Resize


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
это ячейка C4 в которой при различных условиях, до работы этого макроса прописывается диапазон например B21:B72, это всегда столбец B

Ну, это непринципиально, главное, что это Range. Здесь дело в том, что как бы ты не обозначил, у тебя получится в итоге что-то типа
[vba]
Код
Range("B22").что-то
[/vba], где "что-то" - это или Range, или Cells, без разницы что, но считаться оно будет так, как если бы B22 являлась ячейкой А1. Я, если так пишу (редко бывает), то для наглядности представляю себе на листе наложенным другой лист, у которого левый верхний угол (ячейка А1) совпадает с левым верхним углом первого диапазона (В22).
А вообще, на мой взгляд, гораздо проще пользоваться Offset и Resize

Автор - _Boroda_
Дата добавления - 20.08.2015 в 10:13
Nic70y Дата: Четверг, 20.08.2015, 10:16 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 8760
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Offset и Resize
я не спорю.
B22 является ячейкой А1
я догадался, но хотел проветиться :) читать справку то не умею :( только метод научного тыка.
спс.


ЮMoney 41001841029809
 
Ответить
Сообщение
Offset и Resize
я не спорю.
B22 является ячейкой А1
я догадался, но хотел проветиться :) читать справку то не умею :( только метод научного тыка.
спс.

Автор - Nic70y
Дата добавления - 20.08.2015 в 10:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование нескольких ячеек по значению одной. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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