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

Вход

Регистрация

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

 

= Мир MS Excel/Функция Parse / изменение формата ячейки - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Функция Parse / изменение формата ячейки
eenk Дата: Воскресенье, 17.12.2017, 13:36 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день. Проблема была такая.
1. формат ячейки был, допустим, текстовый и содержал такую информацию "Чт 12.05.17". И таких ячеек целый столбец, штук 500. (получено копированием из Project)
2. Заменой удаляю все текстовые составляющие типа "Чт ", "Пт " и так далее.
[vba]
Код
Cells.Replace What:="Вс ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Пн ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Вт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Ср ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Чт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Пт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Сб ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba]
3. Однако, после этого, ячейка не получает формат "Дата" и не обсчитывается формулами на листе. Даже, если вручную заменить формат ячеек на "Дата", то она будет рассчитываться только после того, как данную ячейку отредактируешь и нажмешь ввод.
Ясное дело, вручную этим заниматься не дело.
Вот такой макрос не помог:
[vba]
Код
For Each cell In Selection
    Dim a, b As Variant
    a = cell.Formula: b = cell.NumberFormat
    cell.Value = ""
    cell.FormulaR1C1 = a: cell.NumberFormat = b
Next cell
[/vba]
и всякие другие изощрения тоже.

Зато, как ни странно, простая команда Selection.Parse магическим образом превращала мертвый выделенный диапазон в работающие ячейки.
Правда, работает она только с одним столбцом.

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


Сообщение отредактировал eenk - Воскресенье, 17.12.2017, 13:37
 
Ответить
СообщениеДобрый день. Проблема была такая.
1. формат ячейки был, допустим, текстовый и содержал такую информацию "Чт 12.05.17". И таких ячеек целый столбец, штук 500. (получено копированием из Project)
2. Заменой удаляю все текстовые составляющие типа "Чт ", "Пт " и так далее.
[vba]
Код
Cells.Replace What:="Вс ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Пн ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Вт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Ср ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Чт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Пт ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="Сб ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
[/vba]
3. Однако, после этого, ячейка не получает формат "Дата" и не обсчитывается формулами на листе. Даже, если вручную заменить формат ячеек на "Дата", то она будет рассчитываться только после того, как данную ячейку отредактируешь и нажмешь ввод.
Ясное дело, вручную этим заниматься не дело.
Вот такой макрос не помог:
[vba]
Код
For Each cell In Selection
    Dim a, b As Variant
    a = cell.Formula: b = cell.NumberFormat
    cell.Value = ""
    cell.FormulaR1C1 = a: cell.NumberFormat = b
Next cell
[/vba]
и всякие другие изощрения тоже.

Зато, как ни странно, простая команда Selection.Parse магическим образом превращала мертвый выделенный диапазон в работающие ячейки.
Правда, работает она только с одним столбцом.

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

Автор - eenk
Дата добавления - 17.12.2017 в 13:36
Karataev Дата: Воскресенье, 17.12.2017, 16:35 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
Может, кто и объяснит, зачем эта функция, вообще.

Этот метод разбивает данные в ячейке на заданное количество столбцов. В официальной справке есть пример. В нем номер телефона разбивается на две части.
Номер телефона до применения метода: 206-555-1212. После в одном столбце будет 206, во втором 555-1212.
Если не использовать параметры (Вы так делаете), то разбивки не происходит, но Excel изменяет тип данных, что Вы и используете для своей задачи.
В Excel есть похожая ситуация - это использование Данные - Текст по столбцам. Эта команда тоже используется для изменения типа данных у чисел. В этом случае также ничего не разбивается, но числа становятся числами.


Сообщение отредактировал Karataev - Воскресенье, 17.12.2017, 16:36
 
Ответить
Сообщение
Может, кто и объяснит, зачем эта функция, вообще.

Этот метод разбивает данные в ячейке на заданное количество столбцов. В официальной справке есть пример. В нем номер телефона разбивается на две части.
Номер телефона до применения метода: 206-555-1212. После в одном столбце будет 206, во втором 555-1212.
Если не использовать параметры (Вы так делаете), то разбивки не происходит, но Excel изменяет тип данных, что Вы и используете для своей задачи.
В Excel есть похожая ситуация - это использование Данные - Текст по столбцам. Эта команда тоже используется для изменения типа данных у чисел. В этом случае также ничего не разбивается, но числа становятся числами.

Автор - Karataev
Дата добавления - 17.12.2017 в 16:35
  • Страница 1 из 1
  • 1
Поиск:

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