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

Вход

Регистрация

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

 

= Мир MS Excel/преобразование чисел в текст в макросе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
преобразование чисел в текст в макросе
Vitality Дата: Понедельник, 15.07.2013, 16:23 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. При запуске макроса числовые значения почему-то частично отображаются в виде текста, плюс меняется положение десятичного знака (см. приложение). Например, ячейка G5 в листе original - 142,13882 как число, а в листе changed эта же ячейка 14 213 882,00000. С чем может быть связана проблема?
По файлу: original - лист, в котором данные во время записи макроса, в changed - данные после запуска макроса, macros - кнопка с назначенным макросом, плюс оригинальный файл с данными (блокнот).
К сообщению приложен файл: inventory_repor.xlsm (79.5 Kb) · 15.07.2013.wri (59.7 Kb)
 
Ответить
СообщениеДобрый день. При запуске макроса числовые значения почему-то частично отображаются в виде текста, плюс меняется положение десятичного знака (см. приложение). Например, ячейка G5 в листе original - 142,13882 как число, а в листе changed эта же ячейка 14 213 882,00000. С чем может быть связана проблема?
По файлу: original - лист, в котором данные во время записи макроса, в changed - данные после запуска макроса, macros - кнопка с назначенным макросом, плюс оригинальный файл с данными (блокнот).

Автор - Vitality
Дата добавления - 15.07.2013 в 16:23
Poltava Дата: Понедельник, 15.07.2013, 18:24 | Сообщение № 2
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Вы хоть обьясните что должно из чего получиться, а то у вам макрос это куча записанного макроредактором мусора из которого нужно найти 10 нужных строк но без понимания того что нужно сделать это фактически невозможно.
 
Ответить
СообщениеВы хоть обьясните что должно из чего получиться, а то у вам макрос это куча записанного макроредактором мусора из которого нужно найти 10 нужных строк но без понимания того что нужно сделать это фактически невозможно.

Автор - Poltava
Дата добавления - 15.07.2013 в 18:24
Vitality Дата: Вторник, 16.07.2013, 09:09 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Есть отчет по складским остаткам. Он приходит в формате блокнота (во вложении). Цель: получить экселеваримый отчет из этого блокнота.
Т.е. вначале копирую данные из блокнота в эксель. Что делает макрос:
- выделаем столбец А
- идем в данные -> текст в столбцах, выбираем с разделителями. Разбиваем отчет на столбцы.
- для столбцов Qty on Hand, GL Cost, Ext GL Cost: формат данных - текстовый, т.к. при общем формате данных часть значений, например, 6.0, будут переведены в дату
- для вышеперечисленных столбцов убираем запятые и меняем точки на запятые, чтобы обрабытывать в экслеле, сохраняем значения как числа
убираем лишние ненужные строки
- добавляем столбец location и заполняем его значениями по формуле, убиваем формулу, сохранив только значения
- добавляем фильтр для заголовка
В конечном виде получаем отчет, как в листе changed.
Вопрос, почему часть значений получается в формате текст и плывут запятые для GL Cost?
 
Ответить
СообщениеЕсть отчет по складским остаткам. Он приходит в формате блокнота (во вложении). Цель: получить экселеваримый отчет из этого блокнота.
Т.е. вначале копирую данные из блокнота в эксель. Что делает макрос:
- выделаем столбец А
- идем в данные -> текст в столбцах, выбираем с разделителями. Разбиваем отчет на столбцы.
- для столбцов Qty on Hand, GL Cost, Ext GL Cost: формат данных - текстовый, т.к. при общем формате данных часть значений, например, 6.0, будут переведены в дату
- для вышеперечисленных столбцов убираем запятые и меняем точки на запятые, чтобы обрабытывать в экслеле, сохраняем значения как числа
убираем лишние ненужные строки
- добавляем столбец location и заполняем его значениями по формуле, убиваем формулу, сохранив только значения
- добавляем фильтр для заголовка
В конечном виде получаем отчет, как в листе changed.
Вопрос, почему часть значений получается в формате текст и плывут запятые для GL Cost?

Автор - Vitality
Дата добавления - 16.07.2013 в 09:09
SkyPro Дата: Вторник, 16.07.2013, 10:57 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Может вот эти строки мешают?
[vba]
Код
    Selection.NumberFormat = "#,##0.00"
       Selection.NumberFormat = "#,##0"
[/vba]
Попробуйте :
[vba]
Код
    Selection.NumberFormat = "0.000"
[/vba]
+рекомендую почистить код, убрать все ActiveWindow.ScrollRow и тому подобный мусор.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 16.07.2013, 10:58
 
Ответить
СообщениеМожет вот эти строки мешают?
[vba]
Код
    Selection.NumberFormat = "#,##0.00"
       Selection.NumberFormat = "#,##0"
[/vba]
Попробуйте :
[vba]
Код
    Selection.NumberFormat = "0.000"
[/vba]
+рекомендую почистить код, убрать все ActiveWindow.ScrollRow и тому подобный мусор.

Автор - SkyPro
Дата добавления - 16.07.2013 в 10:57
Vitality Дата: Вторник, 16.07.2013, 13:45 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
В них я устанавливаю числовой формат с двумя знаками после запятой для столбца H, числовой с 5ю знаками для G. Почему они могут быть неверные?
 
Ответить
СообщениеВ них я устанавливаю числовой формат с двумя знаками после запятой для столбца H, числовой с 5ю знаками для G. Почему они могут быть неверные?

Автор - Vitality
Дата добавления - 16.07.2013 в 13:45
SkyPro Дата: Вторник, 16.07.2013, 13:53 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Vitality, пробовали убрать диезы?

[vba]
Код
Range("H:H").NumberFormat = "0.00" 'число и два знака после запятой
Range("G:G").NumberFormat = "0.00000" 'число и пять знаков после запятой  
[/vba]

Перезапишите макрорекордером установку формата ячейки


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 16.07.2013, 14:03
 
Ответить
СообщениеVitality, пробовали убрать диезы?

[vba]
Код
Range("H:H").NumberFormat = "0.00" 'число и два знака после запятой
Range("G:G").NumberFormat = "0.00000" 'число и пять знаков после запятой  
[/vba]

Перезапишите макрорекордером установку формата ячейки

Автор - SkyPro
Дата добавления - 16.07.2013 в 13:53
Vitality Дата: Вторник, 16.07.2013, 14:27 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
SkyPro, диезы попробовал убрать, но не помогло. Каким образом можно перезаписать установку формата ячейки?
 
Ответить
СообщениеSkyPro, диезы попробовал убрать, но не помогло. Каким образом можно перезаписать установку формата ячейки?

Автор - Vitality
Дата добавления - 16.07.2013 в 14:27
SkyPro Дата: Вторник, 16.07.2013, 14:38 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
нажать запись макроса и изменить форматирование ячейки. После чего подставить те строки, которые получились в макрос, который вы записали ранее.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 16.07.2013, 14:38
 
Ответить
Сообщениенажать запись макроса и изменить форматирование ячейки. После чего подставить те строки, которые получились в макрос, который вы записали ранее.

Автор - SkyPro
Дата добавления - 16.07.2013 в 14:38
SkyPro Дата: Вторник, 16.07.2013, 15:08 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Вы бы более подробно описали ситуацию (что конкретно нужно получить из каких данных) + файл примера с исходными данными, и что должно получиться.
На данный момент единственное, что могу посоветовать - скопируйте данные листа ориджинал и вставьте на лист чейнджед только значения.


skypro1111@gmail.com
 
Ответить
СообщениеВы бы более подробно описали ситуацию (что конкретно нужно получить из каких данных) + файл примера с исходными данными, и что должно получиться.
На данный момент единственное, что могу посоветовать - скопируйте данные листа ориджинал и вставьте на лист чейнджед только значения.

Автор - SkyPro
Дата добавления - 16.07.2013 в 15:08
Vitality Дата: Вторник, 16.07.2013, 15:09 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Пробовал. Не помогло. Записал отдельно макрос на разбивку по столбцам и изменение текстового формата на числовой. всё равно криво получается - часть в текстовом формате, часть в числовом и плывает десятичная запятая (см. приложение).
К сообщению приложен файл: report.xlsm (46.8 Kb)
 
Ответить
СообщениеПробовал. Не помогло. Записал отдельно макрос на разбивку по столбцам и изменение текстового формата на числовой. всё равно криво получается - часть в текстовом формате, часть в числовом и плывает десятичная запятая (см. приложение).

Автор - Vitality
Дата добавления - 16.07.2013 в 15:09
Матраскин Дата: Вторник, 16.07.2013, 15:27 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
выделяешь первое "неправильное" число, проматываешь в конец столбца, зажимаешь шифт и нажимаешь на ячейку в этом же столбце....или не в этом же, вообщем отмечаешь конец выделения. Возвращаешься назад и выбираешь Преобразовать текст в число.
К сообщению приложен файл: 5877714.xlsm (46.2 Kb)


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Вторник, 16.07.2013, 15:28
 
Ответить
Сообщениевыделяешь первое "неправильное" число, проматываешь в конец столбца, зажимаешь шифт и нажимаешь на ячейку в этом же столбце....или не в этом же, вообщем отмечаешь конец выделения. Возвращаешься назад и выбираешь Преобразовать текст в число.

Автор - Матраскин
Дата добавления - 16.07.2013 в 15:27
M73568 Дата: Вторник, 16.07.2013, 15:35 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
Чуть проще, выделил пустую ячейку, нажал копировать, выделил столбцы D:G, в меню выбрать "Специальная вставка", и отметить "Сложить", и ОК
К сообщению приложен файл: 8409493.jpg (24.8 Kb)
 
Ответить
СообщениеЧуть проще, выделил пустую ячейку, нажал копировать, выделил столбцы D:G, в меню выбрать "Специальная вставка", и отметить "Сложить", и ОК

Автор - M73568
Дата добавления - 16.07.2013 в 15:35
Vitality Дата: Вторник, 16.07.2013, 15:38 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
вопрос не в том, как вручную преобразовать "неправильное" текстовое число в число, а прежде всего в том, что вместо 142,13882 я получаю 14 213 882,00000. Во-вторых, макрос для того и пишется, чтобы уйти от дополнительных ручных преобразований. Но пока я не могу понять, почему в результате работы макроса получается не тот формат ячеек, какой нужен.
 
Ответить
Сообщениевопрос не в том, как вручную преобразовать "неправильное" текстовое число в число, а прежде всего в том, что вместо 142,13882 я получаю 14 213 882,00000. Во-вторых, макрос для того и пишется, чтобы уйти от дополнительных ручных преобразований. Но пока я не могу понять, почему в результате работы макроса получается не тот формат ячеек, какой нужен.

Автор - Vitality
Дата добавления - 16.07.2013 в 15:38
M73568 Дата: Вторник, 16.07.2013, 15:45 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
Но пока я не могу понять, почему в результате работы макроса получается не тот формат ячеек, какой нужен.

Исходных данных в Вашем файле нет, есть данные после "неудачной" работы макроса. Сложно сказать что там было и почему такой результат.
 
Ответить
Сообщение
Но пока я не могу понять, почему в результате работы макроса получается не тот формат ячеек, какой нужен.

Исходных данных в Вашем файле нет, есть данные после "неудачной" работы макроса. Сложно сказать что там было и почему такой результат.

Автор - M73568
Дата добавления - 16.07.2013 в 15:45
nilem Дата: Вторник, 16.07.2013, 15:56 | Сообщение № 15
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
преобразовать "неправильное" текстовое число в число

попробуйте как-то так (на примере вашего последнего файла)
[vba]
Код
With ActiveSheet.UsedRange
     .Columns(4).TextToColumns
     .Columns(6).TextToColumns
     .Columns(7).TextToColumns
End With
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
преобразовать "неправильное" текстовое число в число

попробуйте как-то так (на примере вашего последнего файла)
[vba]
Код
With ActiveSheet.UsedRange
     .Columns(4).TextToColumns
     .Columns(6).TextToColumns
     .Columns(7).TextToColumns
End With
[/vba]

Автор - nilem
Дата добавления - 16.07.2013 в 15:56
Vitality Дата: Вторник, 16.07.2013, 16:08 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добавил лист с исходным файлом и то, что получилось после макроса. Как пример, ячейчка F10 c неправильной десятичной запятой и F9 с текстом вместо числа.
К сообщению приложен файл: 2493774.xlsm (67.1 Kb)
 
Ответить
СообщениеДобавил лист с исходным файлом и то, что получилось после макроса. Как пример, ячейчка F10 c неправильной десятичной запятой и F9 с текстом вместо числа.

Автор - Vitality
Дата добавления - 16.07.2013 в 16:08
M73568 Дата: Вторник, 16.07.2013, 16:17 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
Как минимум строчку с
[vba]
Код
    Selection.NumberFormat = "0.00000"
[/vba]
Перенести в самый конец макроса, результат будет точнее wink


Сообщение отредактировал M73568 - Вторник, 16.07.2013, 16:17
 
Ответить
СообщениеКак минимум строчку с
[vba]
Код
    Selection.NumberFormat = "0.00000"
[/vba]
Перенести в самый конец макроса, результат будет точнее wink

Автор - M73568
Дата добавления - 16.07.2013 в 16:17
SkyPro Дата: Вторник, 16.07.2013, 16:36 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
епрст! )
Что бы записать в ячейку запятую, в коде ВБА нужно ставить точку.
Попробуйте поменять в макросе все строки где меняется точка на запятую :[vba]
Код
Replace What:=".", Replacement:=","
[/vba]
на:
[vba]
Код
Replace What:=".", Replacement:="."
[/vba]

Вот так, короче:[vba]
Код
Sub changeView()
With Sheets(1)
      .Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
          FieldInfo:=Array(Array(0, 1), Array(19, 1), Array(69, 1), Array(72, 2), Array(86, 1), _
          Array(89, 2), Array(105, 2)), TrailingMinusNumbers:=True
      .Columns("A:G").EntireColumn.AutoFit
      .Columns("F:F").Replace What:=".", Replacement:="."
      .Columns("G:G").Replace What:=",", Replacement:=""
      .Columns("G:G").Replace What:=".", Replacement:="."
      .Columns("D:D").Replace What:=",", Replacement:=""
      .Columns("D:D").Replace What:=".", Replacement:="."
      .Columns("F:F").NumberFormat = "0.00000"
      .Columns("D:D").NumberFormat = "0.00"
      .Columns("G:G").NumberFormat = "0.00"

End With
End Sub
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 16.07.2013, 16:55
 
Ответить
Сообщениеепрст! )
Что бы записать в ячейку запятую, в коде ВБА нужно ставить точку.
Попробуйте поменять в макросе все строки где меняется точка на запятую :[vba]
Код
Replace What:=".", Replacement:=","
[/vba]
на:
[vba]
Код
Replace What:=".", Replacement:="."
[/vba]

Вот так, короче:[vba]
Код
Sub changeView()
With Sheets(1)
      .Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
          FieldInfo:=Array(Array(0, 1), Array(19, 1), Array(69, 1), Array(72, 2), Array(86, 1), _
          Array(89, 2), Array(105, 2)), TrailingMinusNumbers:=True
      .Columns("A:G").EntireColumn.AutoFit
      .Columns("F:F").Replace What:=".", Replacement:="."
      .Columns("G:G").Replace What:=",", Replacement:=""
      .Columns("G:G").Replace What:=".", Replacement:="."
      .Columns("D:D").Replace What:=",", Replacement:=""
      .Columns("D:D").Replace What:=".", Replacement:="."
      .Columns("F:F").NumberFormat = "0.00000"
      .Columns("D:D").NumberFormat = "0.00"
      .Columns("G:G").NumberFormat = "0.00"

End With
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 16.07.2013 в 16:36
Vitality Дата: Вторник, 16.07.2013, 17:01 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Теперь всё работает, спасибо!)
 
Ответить
СообщениеТеперь всё работает, спасибо!)

Автор - Vitality
Дата добавления - 16.07.2013 в 17:01
  • Страница 1 из 1
  • 1
Поиск:

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