Перенести значения из строки
Obla4ko
Дата: Пятница, 08.07.2016, 19:41 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Добрый день. Имеется таблица - Детализация тел.разговоров. В ней порядка 20-и тысяч записей. Стоит задача привести таблицу в удобочитаемый вид, а именно там где встречается в столбце "Код" значение "8495" перенести его в строку с номером, а значение "8499" оставить не тронутым. Номера с кодом "8499" отображаются полностью, а вот "8495" обрезает. Делаю это все при помощи макроса: [vba]Код
For Each c In Worksheets("Лист1").Range("A4:A6").Cells c.Value = "8495" + CStr(c.Value) Next
[/vba] Но все бы да ничего, только вот записей очень много(( Помогите, чем можете. [moder]Читаем Правила форума. Оформляем код тегами, прикладываем нормальный пример. Исправлено [/moder]
Добрый день. Имеется таблица - Детализация тел.разговоров. В ней порядка 20-и тысяч записей. Стоит задача привести таблицу в удобочитаемый вид, а именно там где встречается в столбце "Код" значение "8495" перенести его в строку с номером, а значение "8499" оставить не тронутым. Номера с кодом "8499" отображаются полностью, а вот "8495" обрезает. Делаю это все при помощи макроса: [vba]Код
For Each c In Worksheets("Лист1").Range("A4:A6").Cells c.Value = "8495" + CStr(c.Value) Next
[/vba] Но все бы да ничего, только вот записей очень много(( Помогите, чем можете. [moder]Читаем Правила форума. Оформляем код тегами, прикладываем нормальный пример. Исправлено [/moder] Obla4ko
К сообщению приложен файл:
_1.xlsx
(9.2 Kb)
Сообщение отредактировал Obla4ko - Суббота, 09.07.2016, 08:33
Ответить
Сообщение Добрый день. Имеется таблица - Детализация тел.разговоров. В ней порядка 20-и тысяч записей. Стоит задача привести таблицу в удобочитаемый вид, а именно там где встречается в столбце "Код" значение "8495" перенести его в строку с номером, а значение "8499" оставить не тронутым. Номера с кодом "8499" отображаются полностью, а вот "8495" обрезает. Делаю это все при помощи макроса: [vba]Код
For Each c In Worksheets("Лист1").Range("A4:A6").Cells c.Value = "8495" + CStr(c.Value) Next
[/vba] Но все бы да ничего, только вот записей очень много(( Помогите, чем можете. [moder]Читаем Правила форума. Оформляем код тегами, прикладываем нормальный пример. Исправлено [/moder] Автор - Obla4ko Дата добавления - 08.07.2016 в 19:41
Pelena
Дата: Суббота, 09.07.2016, 08:47 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация:
4420
±
Замечаний:
±
Excel 365 & Mac Excel
Здравствуйте. Можно формулой в доп. столбцеКод
=ЕСЛИ(C2=8495;C2&A2;A2)
Потом скопировать/вставить как значения на место первого столбца
Здравствуйте. Можно формулой в доп. столбцеКод
=ЕСЛИ(C2=8495;C2&A2;A2)
Потом скопировать/вставить как значения на место первого столбца Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Здравствуйте. Можно формулой в доп. столбцеКод
=ЕСЛИ(C2=8495;C2&A2;A2)
Потом скопировать/вставить как значения на место первого столбца Автор - Pelena Дата добавления - 09.07.2016 в 08:47
Obla4ko
Дата: Суббота, 09.07.2016, 09:43 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Pelena, да, хороший способ, только если таблица небольшая. У меня записей около 20-и тысяч). Я в макросе меняю значение так мне кажется быстрее. Сегодня дошел до 6-и тысяч
Pelena, да, хороший способ, только если таблица небольшая. У меня записей около 20-и тысяч). Я в макросе меняю значение так мне кажется быстрее. Сегодня дошел до 6-и тысяч Obla4ko
Сообщение отредактировал Obla4ko - Суббота, 09.07.2016, 09:46
Ответить
Сообщение Pelena, да, хороший способ, только если таблица небольшая. У меня записей около 20-и тысяч). Я в макросе меняю значение так мне кажется быстрее. Сегодня дошел до 6-и тысяч Автор - Obla4ko Дата добавления - 09.07.2016 в 09:43
Pelena
Дата: Суббота, 09.07.2016, 10:05 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация:
4420
±
Замечаний:
±
Excel 365 & Mac Excel
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Karataev
Дата: Суббота, 09.07.2016, 14:45 |
Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Данный макрос сам определяет, сколько строк с данными на листе, и не нужно в коде изменять номер последней строки: [vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If arr1(i, 1) = 8495 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba]
Данный макрос сам определяет, сколько строк с данными на листе, и не нужно в коде изменять номер последней строки: [vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If arr1(i, 1) = 8495 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba] Karataev
Ответить
Сообщение Данный макрос сам определяет, сколько строк с данными на листе, и не нужно в коде изменять номер последней строки: [vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If arr1(i, 1) = 8495 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba] Автор - Karataev Дата добавления - 09.07.2016 в 14:45
Obla4ko
Дата: Суббота, 09.07.2016, 15:36 |
Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Профессионалы своего дела Большое СПАСИБО ВСЕМ!!!
Профессионалы своего дела Большое СПАСИБО ВСЕМ!!! Obla4ko
Ответить
Сообщение Профессионалы своего дела Большое СПАСИБО ВСЕМ!!! Автор - Obla4ko Дата добавления - 09.07.2016 в 15:36
Obla4ko
Дата: Понедельник, 11.07.2016, 22:01 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
А если в поле "Код" значение не "8495", а "8495777900" то как быть?
А если в поле "Код" значение не "8495", а "8495777900" то как быть? Obla4ko
Ответить
Сообщение А если в поле "Код" значение не "8495", а "8495777900" то как быть? Автор - Obla4ko Дата добавления - 11.07.2016 в 22:01
Karataev
Дата: Понедельник, 11.07.2016, 22:08 |
Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
[vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If InStr(1, CStr(arr1(i, 1)), "8495", vbTextCompare) = 1 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba]
[vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If InStr(1, CStr(arr1(i, 1)), "8495", vbTextCompare) = 1 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba] Karataev
Сообщение отредактировал Karataev - Понедельник, 11.07.2016, 22:11
Ответить
Сообщение [vba]Код
Sub Макрос() Dim arr1(), arr2(), lr As Long, i As Long Application.ScreenUpdating = False lr = Columns("C").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr1() = Range("C2:C" & lr).Value arr2() = Range("A2:A" & lr).Value For i = 1 To UBound(arr1) If InStr(1, CStr(arr1(i, 1)), "8495", vbTextCompare) = 1 Then arr2(i, 1) = CDbl(8495 & arr2(i, 1)) End If Next Range("A2").Resize(UBound(arr2)).Value = arr2() Application.ScreenUpdating = True End Sub
[/vba] Автор - Karataev Дата добавления - 11.07.2016 в 22:08
sv2014
Дата: Вторник, 12.07.2016, 00:09 |
Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация:
61
±
Замечаний:
0% ±
Excel 2013
Obla4ko , еще вариант макроса,кнопки test и повтор [vba]Код
Sub test() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]
Obla4ko , еще вариант макроса,кнопки test и повтор [vba]Код
Sub test() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]sv2014
Ответить
Сообщение Obla4ko , еще вариант макроса,кнопки test и повтор [vba]Код
Sub test() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]Автор - sv2014 Дата добавления - 12.07.2016 в 00:09
sv2014
Дата: Вторник, 12.07.2016, 00:41 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация:
61
±
Замечаний:
0% ±
Excel 2013
Obla4ko , добавил вариант с кнопкой test1 для Вашего сообщения7 [vba]Код
Sub test1() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Or Left(z(i, UBound(z, 2)), 4) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]
Obla4ko , добавил вариант с кнопкой test1 для Вашего сообщения7 [vba]Код
Sub test1() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Or Left(z(i, UBound(z, 2)), 4) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]sv2014
Ответить
Сообщение Obla4ko , добавил вариант с кнопкой test1 для Вашего сообщения7 [vba]Код
Sub test1() Dim z, i&: z = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value For i = 1 To UBound(z): If z(i, UBound(z, 2)) = "8495" Or Left(z(i, UBound(z, 2)), 4) = "8495" Then z(i, 1) = 8495 & z(i, 1) Next Range("A1").Resize(UBound(z), UBound(z, 2)) = z End Sub
[/vba]Автор - sv2014 Дата добавления - 12.07.2016 в 00:41
Obla4ko
Дата: Вторник, 12.07.2016, 21:17 |
Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Да, всё работает как надо! А можно извлечь время в отдельный столбец?
Да, всё работает как надо! А можно извлечь время в отдельный столбец? Obla4ko
Ответить
Сообщение Да, всё работает как надо! А можно извлечь время в отдельный столбец? Автор - Obla4ko Дата добавления - 12.07.2016 в 21:17
Karataev
Дата: Вторник, 12.07.2016, 21:29 |
Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Obla4ko, это уже вопрос по другому файлу, поэтому создайте новую тему.
Obla4ko, это уже вопрос по другому файлу, поэтому создайте новую тему. Karataev
Ответить
Сообщение Obla4ko, это уже вопрос по другому файлу, поэтому создайте новую тему. Автор - Karataev Дата добавления - 12.07.2016 в 21:29
Obla4ko
Дата: Вторник, 12.07.2016, 21:36 |
Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация:
0
±
Замечаний:
20% ±
Excel 2010
Всё ясно. Тему тогда можно закрыть. Еще раз большое человеческое спасибо.
Всё ясно. Тему тогда можно закрыть. Еще раз большое человеческое спасибо. Obla4ko
Ответить
Сообщение Всё ясно. Тему тогда можно закрыть. Еще раз большое человеческое спасибо. Автор - Obla4ko Дата добавления - 12.07.2016 в 21:36