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

Вход

Регистрация

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

 

= Мир MS Excel/Сцепить три столбика в один - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Сцепить три столбика в один
Крутыш Дата: Вторник, 07.10.2014, 18:05 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Пытаюсь сцепить 3 столбика в 1, так чтобы получилось как дата, но почему-то мне выдает ошибку в последней формуле. Что с ней не так?
К сообщению приложен файл: 2-__-.xlsm (17.2 Kb)
 
Ответить
СообщениеПытаюсь сцепить 3 столбика в 1, так чтобы получилось как дата, но почему-то мне выдает ошибку в последней формуле. Что с ней не так?

Автор - Крутыш
Дата добавления - 07.10.2014 в 18:05
Rioran Дата: Вторник, 07.10.2014, 18:30 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Крутыш, здравствуйте.

При работе с макросом подсвечивает следующую строку:

[vba]
Код
cel = cel.Value & "." & Cells(rngm).Value & "." & Cells(rngy)
[/vba]
Вижу, что все переменные - типа Range. Вы пытаетесь присвоить cel некоторое значение. Для этого Вам надо обратиться к свойству значения. Т.Е. начало формулы должно выглядеть так:

[vba]
Код
cel.Value = 'чего-то там
[/vba]
Дальше вопрос, что такое Cells(rngm).Value? У каждого Cells должно быть 2 координаты - номер строки и номер столбца.

Рекомендовал бы ту же самую задачу сделать так:

[vba]
Код
Sub Rio_Runner()

Dim X As Long 'Для перебора ячеек.

For X = 6 To Cells(Rows.Count, 6).End(xlUp).Row
     Cells(X, 6).Value = Cells(X, 6).Value & "." & Cells(X, 5).Value & "." & Cells(X, 4).Value
Next X

End Sub
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеКрутыш, здравствуйте.

При работе с макросом подсвечивает следующую строку:

[vba]
Код
cel = cel.Value & "." & Cells(rngm).Value & "." & Cells(rngy)
[/vba]
Вижу, что все переменные - типа Range. Вы пытаетесь присвоить cel некоторое значение. Для этого Вам надо обратиться к свойству значения. Т.Е. начало формулы должно выглядеть так:

[vba]
Код
cel.Value = 'чего-то там
[/vba]
Дальше вопрос, что такое Cells(rngm).Value? У каждого Cells должно быть 2 координаты - номер строки и номер столбца.

Рекомендовал бы ту же самую задачу сделать так:

[vba]
Код
Sub Rio_Runner()

Dim X As Long 'Для перебора ячеек.

For X = 6 To Cells(Rows.Count, 6).End(xlUp).Row
     Cells(X, 6).Value = Cells(X, 6).Value & "." & Cells(X, 5).Value & "." & Cells(X, 4).Value
Next X

End Sub
[/vba]

Автор - Rioran
Дата добавления - 07.10.2014 в 18:30
Крутыш Дата: Вторник, 07.10.2014, 18:38 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 60% ±

Excel 2010
Спасибо, а для чего ставить Ас Лонг?
 
Ответить
СообщениеСпасибо, а для чего ставить Ас Лонг?

Автор - Крутыш
Дата добавления - 07.10.2014 в 18:38
EvgenyD Дата: Вторник, 07.10.2014, 19:52 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Крутыш, наверное т.к. X - переменная номера строки, которых на листе Excel 1048576 (в Excel с 2010 г., если не ошибся), и Long здесь наиболее подходящий тип переменной.


Сообщение отредактировал EvgenyD - Вторник, 07.10.2014, 19:54
 
Ответить
СообщениеКрутыш, наверное т.к. X - переменная номера строки, которых на листе Excel 1048576 (в Excel с 2010 г., если не ошибся), и Long здесь наиболее подходящий тип переменной.

Автор - EvgenyD
Дата добавления - 07.10.2014 в 19:52
_Boroda_ Дата: Вторник, 07.10.2014, 21:06 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Чтобы без цикла и чтобы итог все-таки был датой, а не текстом, можно что-то в этом роде
[vba]
Код
Sub tt()
      Application.ScreenUpdating = 0
      r_ = Range("F" & Rows.Count).End(xlUp).Row
      Range("H6:H" & r_).FormulaR1C1 = "=--(RC[-2]&""/""&RC[-3]&""/""&RC[-4])"
      Range("F6:F" & r_) = Range("H6:H" & r_).Value
      Range("H6:H" & r_).ClearContents
      Range("F6:F" & r_).NumberFormat = "dd/mm/yy;@"
      Application.ScreenUpdating = 1
End Sub
[/vba]
Вместо столбца Н можно любой другой, заведомо пустой столбец. Или вычислить программно - например, так:
[vba]
Код
gg = ActiveSheet.UsedRange.Columns.Count+1
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧтобы без цикла и чтобы итог все-таки был датой, а не текстом, можно что-то в этом роде
[vba]
Код
Sub tt()
      Application.ScreenUpdating = 0
      r_ = Range("F" & Rows.Count).End(xlUp).Row
      Range("H6:H" & r_).FormulaR1C1 = "=--(RC[-2]&""/""&RC[-3]&""/""&RC[-4])"
      Range("F6:F" & r_) = Range("H6:H" & r_).Value
      Range("H6:H" & r_).ClearContents
      Range("F6:F" & r_).NumberFormat = "dd/mm/yy;@"
      Application.ScreenUpdating = 1
End Sub
[/vba]
Вместо столбца Н можно любой другой, заведомо пустой столбец. Или вычислить программно - например, так:
[vba]
Код
gg = ActiveSheet.UsedRange.Columns.Count+1
[/vba]

Автор - _Boroda_
Дата добавления - 07.10.2014 в 21:06
Rioran Дата: Вторник, 07.10.2014, 21:10 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
EvgenyD, спасибо, всё верно.

Крутыш, эта строка объявляет переменную. Если после имени переменной ничего не писать - под неё в памяти компьютера будет зарезервировано побольше памяти, с запасом. Когда в макросе всего одна переменная - её тип в принципе можно не указывать. Машина как-нибудь разберётся. Но если необходимо работать с большим количеством переменных, то там стоит уже побороться за каждый байт.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеEvgenyD, спасибо, всё верно.

Крутыш, эта строка объявляет переменную. Если после имени переменной ничего не писать - под неё в памяти компьютера будет зарезервировано побольше памяти, с запасом. Когда в макросе всего одна переменная - её тип в принципе можно не указывать. Машина как-нибудь разберётся. Но если необходимо работать с большим количеством переменных, то там стоит уже побороться за каждый байт.

Автор - Rioran
Дата добавления - 07.10.2014 в 21:10
  • Страница 1 из 1
  • 1
Поиск:

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