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

Вход

Регистрация

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

 

= Мир MS Excel/Изменение формата числа - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Изменение формата числа
Тамоя Дата: Пятница, 19.06.2015, 14:30 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Добрый день.
Имеется следующая проблема: при выгрузке значений из программы сбился номер товара (был 1111-2222-3333-4444, стал 1111-22223333-4444), при небольшом количестве позиций руками поправить можно, но если таблица состоит из тысячи позиций, как можно исправить это встроенными функциями? Пример таблицы в файле.
К сообщению приложен файл: 6096118.xls (26.5 Kb)
 
Ответить
СообщениеДобрый день.
Имеется следующая проблема: при выгрузке значений из программы сбился номер товара (был 1111-2222-3333-4444, стал 1111-22223333-4444), при небольшом количестве позиций руками поправить можно, но если таблица состоит из тысячи позиций, как можно исправить это встроенными функциями? Пример таблицы в файле.

Автор - Тамоя
Дата добавления - 19.06.2015 в 14:30
_Boroda_ Дата: Пятница, 19.06.2015, 14:39 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6612 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Такой вариант
Код
=ЛЕВБ(ТЕКСТ(--ПОДСТАВИТЬ(A2;"-";);"0000-0000-0000-0000");18)&ПРАВБ(A2)

или
Код
=ТЕКСТ(ПОДСТАВИТЬ(A2;"-";)/10;"0000-0000-0000-000")&ПРАВБ(A2)
К сообщению приложен файл: 6096118_1.xls (28.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант
Код
=ЛЕВБ(ТЕКСТ(--ПОДСТАВИТЬ(A2;"-";);"0000-0000-0000-0000");18)&ПРАВБ(A2)

или
Код
=ТЕКСТ(ПОДСТАВИТЬ(A2;"-";)/10;"0000-0000-0000-000")&ПРАВБ(A2)

Автор - _Boroda_
Дата добавления - 19.06.2015 в 14:39
HoBU4OK Дата: Пятница, 19.06.2015, 14:40 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 318
Репутация: 14 ±
Замечаний: 0% ±

Excel 2010
Можно через "заменить" убрать"-" на пусто "" а затем через формат ячеек...
К сообщению приложен файл: 11111.xls (36.5 Kb)


Я думал, ты остроглазый лев, а ты слепая собака :-)

Сообщение отредактировал HoBU4OK - Пятница, 19.06.2015, 14:49
 
Ответить
СообщениеМожно через "заменить" убрать"-" на пусто "" а затем через формат ячеек...

Автор - HoBU4OK
Дата добавления - 19.06.2015 в 14:40
_Boroda_ Дата: Пятница, 19.06.2015, 14:45 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6612 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
HoBU4OK,
убрать"-" на пусто "" а затем через формат ячеек

Алексей, не покатит. Посмотрите на последнюю цифру полученного. У нас количество цифр 4+4+4+4=16, а Excel поддерживает только 15 разрядов числа.


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

Алексей, не покатит. Посмотрите на последнюю цифру полученного. У нас количество цифр 4+4+4+4=16, а Excel поддерживает только 15 разрядов числа.

Автор - _Boroda_
Дата добавления - 19.06.2015 в 14:45
HoBU4OK Дата: Пятница, 19.06.2015, 14:49 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 318
Репутация: 14 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Александр, Вы правы. Не учел...


Я думал, ты остроглазый лев, а ты слепая собака :-)
 
Ответить
Сообщение_Boroda_, Александр, Вы правы. Не учел...

Автор - HoBU4OK
Дата добавления - 19.06.2015 в 14:49
МВТ Дата: Пятница, 19.06.2015, 19:12 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Попробуйте такой макрос, запустите на той странице, где у Вас номера
UPD немного подкорректировал код
[vba]
Код
Sub NN()
Dim Col As Integer: Col = Val(InputBox("Введите номер столбца, который будете исправлять"))
If Col = 0 Then Exit Sub
Application.ScreenUpdating = False
Dim S$
Dim arr(0 To 3)
Dim L As Long: L = Cells(Rows.Count, Col).End(xlUp).Row
For I = 2 To L
With Cells(I, Col)
S = Replace(.Value, "-", "")
If Len(S) = 16 Then
     .Value = ""
     For J = 0 To 3
     arr(J) = Mid(S, 1 + 4 * J, 4)
     Next J
.Value = Join(arr, "-")
End If
End With
Next I
Application.ScreenUpdating = True
End Sub
[/vba]


Сообщение отредактировал МВТ - Пятница, 19.06.2015, 19:19
 
Ответить
СообщениеПопробуйте такой макрос, запустите на той странице, где у Вас номера
UPD немного подкорректировал код
[vba]
Код
Sub NN()
Dim Col As Integer: Col = Val(InputBox("Введите номер столбца, который будете исправлять"))
If Col = 0 Then Exit Sub
Application.ScreenUpdating = False
Dim S$
Dim arr(0 To 3)
Dim L As Long: L = Cells(Rows.Count, Col).End(xlUp).Row
For I = 2 To L
With Cells(I, Col)
S = Replace(.Value, "-", "")
If Len(S) = 16 Then
     .Value = ""
     For J = 0 To 3
     arr(J) = Mid(S, 1 + 4 * J, 4)
     Next J
.Value = Join(arr, "-")
End If
End With
Next I
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - МВТ
Дата добавления - 19.06.2015 в 19:12
Udik Дата: Пятница, 19.06.2015, 19:40 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну такой вариант можно:
Код
=ПСТР(ПОДСТАВИТЬ(A1;"-";"");1;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");5;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");9;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");13;4)


смысл такой - берем строк и убираем все тире, а потом считываем по 4 знака с определенной позиции, ну и вставляем тире обратно. Можно еще проверку прикрутить, чтобы цифр было строго 16


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Serge_007 - Пятница, 19.06.2015, 19:44
 
Ответить
СообщениеНу такой вариант можно:
Код
=ПСТР(ПОДСТАВИТЬ(A1;"-";"");1;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");5;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");9;4)&"-"&ПСТР(ПОДСТАВИТЬ(A1;"-";"");13;4)


смысл такой - берем строк и убираем все тире, а потом считываем по 4 знака с определенной позиции, ну и вставляем тире обратно. Можно еще проверку прикрутить, чтобы цифр было строго 16

Автор - Udik
Дата добавления - 19.06.2015 в 19:40
Тамоя Дата: Пятница, 19.06.2015, 20:05 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
MBT, спасибо, интересный макрос
если можно, то уточню пару моментов (с vba работала уж очень давно):
Вы организовываете 2 цикла: 1-й просмотр всех ячеек, начиная со второй в указанном столбце, вопрос: на каком этапе останавливается данный цикл? когда программа сталкивается с пустой ячейкой?
S - по факту это номер строки, верно?
вот эта переменная .Value используется для вывода значения в ячейку?


Сообщение отредактировал Serge_007 - Пятница, 19.06.2015, 20:24
 
Ответить
СообщениеMBT, спасибо, интересный макрос
если можно, то уточню пару моментов (с vba работала уж очень давно):
Вы организовываете 2 цикла: 1-й просмотр всех ячеек, начиная со второй в указанном столбце, вопрос: на каком этапе останавливается данный цикл? когда программа сталкивается с пустой ячейкой?
S - по факту это номер строки, верно?
вот эта переменная .Value используется для вывода значения в ячейку?

Автор - Тамоя
Дата добавления - 19.06.2015 в 20:05
МВТ Дата: Пятница, 19.06.2015, 20:21 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Нет, макрос вычисляет последнюю заполненную строку в указанной колонке и проверяет все до нее. S - промежуточная текстовая переменная (она равна Вашему номеру без "-"). А .Value - значение, содержащееся в ячейке, к которой это .Value относится. Как-то так, надеюсь, что не очень сумбурно
 
Ответить
СообщениеНет, макрос вычисляет последнюю заполненную строку в указанной колонке и проверяет все до нее. S - промежуточная текстовая переменная (она равна Вашему номеру без "-"). А .Value - значение, содержащееся в ячейке, к которой это .Value относится. Как-то так, надеюсь, что не очень сумбурно

Автор - МВТ
Дата добавления - 19.06.2015 в 20:21
  • Страница 1 из 1
  • 1
Поиск:

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