День добрый! Меняю формат ячеек у всех на текстовый. Тип данных текстовым не становится (это в SQL'е можно проверить). F2 и enter "спасают", просто таблица очень большая. Подскажите как вставить во все значимые ячейки перед значением апостроф. Либо посоветуйте альтернативу. Спасибо!
День добрый! Меняю формат ячеек у всех на текстовый. Тип данных текстовым не становится (это в SQL'е можно проверить). F2 и enter "спасают", просто таблица очень большая. Подскажите как вставить во все значимые ячейки перед значением апостроф. Либо посоветуйте альтернативу. Спасибо!Uralan
умеешь пользоваться макросами? выделяешь ячейки, которые нужно перебить в текст, жмешь Alt+F8, ищешь этот макрос (конечно его нужно сначала засунуть в какую-нибудь книгу, напр., в Personal) - "Выполнить" [vba]
Код
Sub Макрос() Dim c As Range
For Each c In Selection c = CStr(c) Next End Su
[/vba]b
умеешь пользоваться макросами? выделяешь ячейки, которые нужно перебить в текст, жмешь Alt+F8, ищешь этот макрос (конечно его нужно сначала засунуть в какую-нибудь книгу, напр., в Personal) - "Выполнить" [vba]
Я чтобы привести значения в соответствие с форматом ячеек применял такой макрос:[vba]
Код
Sub Repair_Value() ' исправить (обновить)записи в ячейках чтобы приняли формат If TypeName(Selection) <> "Range" Then Exit Sub Dim iArr, Arr(), uRng As Range Set uRng = Intersect(Selection, Selection.Parent.UsedRange) Arr = uRng.Value On Error Resume Next For Each iArr In Arr: iArr = iArr * 1: Next uRng.Value = Arr uRng.Select End Sub
[/vba]
код работает БЫСТРО, но не всегда почему-то происходит обновление ячеек... Наверное, потому что идёт передача данных из массива в диапазон "одним махом". Тогда макрос Сани можно чуть подпилить так: [vba]
Код
Sub Repair_Value_Text() If TypeName(Selection) <> "Range" Then Exit Sub Dim iCell As Range Application.ScreenUpdating = False For Each iCell In Intersect(Selection, Selection.Parent.UsedRange) iCell.Value = iCell.Value & "" Next Application.ScreenUpdating = True End Sub
[/vba]
P.S. Чуть-чуть подредактировал 15.02.2011 в 11:58 - добавил забытый мною запрет обновления экрана для увеличения скорости
Я чтобы привести значения в соответствие с форматом ячеек применял такой макрос:[vba]
Код
Sub Repair_Value() ' исправить (обновить)записи в ячейках чтобы приняли формат If TypeName(Selection) <> "Range" Then Exit Sub Dim iArr, Arr(), uRng As Range Set uRng = Intersect(Selection, Selection.Parent.UsedRange) Arr = uRng.Value On Error Resume Next For Each iArr In Arr: iArr = iArr * 1: Next uRng.Value = Arr uRng.Select End Sub
[/vba]
код работает БЫСТРО, но не всегда почему-то происходит обновление ячеек... Наверное, потому что идёт передача данных из массива в диапазон "одним махом". Тогда макрос Сани можно чуть подпилить так: [vba]
Код
Sub Repair_Value_Text() If TypeName(Selection) <> "Range" Then Exit Sub Dim iCell As Range Application.ScreenUpdating = False For Each iCell In Intersect(Selection, Selection.Parent.UsedRange) iCell.Value = iCell.Value & "" Next Application.ScreenUpdating = True End Sub
[/vba]
P.S. Чуть-чуть подредактировал 15.02.2011 в 11:58 - добавил забытый мною запрет обновления экрана для увеличения скоростиAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 15.02.2011, 12:00
Alex_ST, Спасибо большое! А можете объяснить смысл почему excel не переводит сразу в нужный мне тип данных? И я слышал такую версию, что если вручную вводить данные, то с ними легче работать, переводить их из одного формата в другой.
Alex_ST, Спасибо большое! А можете объяснить смысл почему excel не переводит сразу в нужный мне тип данных? И я слышал такую версию, что если вручную вводить данные, то с ними легче работать, переводить их из одного формата в другой.Uralan
Сообщение отредактировал Uralan - Понедельник, 14.02.2011, 14:31
При ручном вводе Ёксель применяет автоформат к данным в соответствии с форматом ячейки. Поэтому и работать с правильно отформатированными данными должно бы быть легче. Но не всегда. Если ячейку с введёнными датой, временем отформатировать как число, то получится абсолютно не вразумительное число, которое далеко не факт, что потом сможешь обратно преобразовать в дату, время. Да и глючит часто этот автоформат... Пытаешься, например, ввести руками в ячейку с общим форматом номер пункта многоуровневого списка 1.2.3, так "шибко умный" Ёксель думает за тебя, что ты хотел ввести дату и преобразует формат ячейки в дату, а сам этот твой ввод в 01.02.2003. И фиг его переубедишь, что так делать не надо.
При ручном вводе Ёксель применяет автоформат к данным в соответствии с форматом ячейки. Поэтому и работать с правильно отформатированными данными должно бы быть легче. Но не всегда. Если ячейку с введёнными датой, временем отформатировать как число, то получится абсолютно не вразумительное число, которое далеко не факт, что потом сможешь обратно преобразовать в дату, время. Да и глючит часто этот автоформат... Пытаешься, например, ввести руками в ячейку с общим форматом номер пункта многоуровневого списка 1.2.3, так "шибко умный" Ёксель думает за тебя, что ты хотел ввести дату и преобразует формат ячейки в дату, а сам этот твой ввод в 01.02.2003. И фиг его переубедишь, что так делать не надо.Alex_ST
Alex_ST, да уж... Я, кстати, заметил, что Excel и считает с нормальной погрешностью! Например в умножении, делении... но это на 2000-ом, делал давно статистику. В общем, на калькуляторе другое получается!
Alex_ST, да уж... Я, кстати, заметил, что Excel и считает с нормальной погрешностью! Например в умножении, делении... но это на 2000-ом, делал давно статистику. В общем, на калькуляторе другое получается!Uralan
Тут обнаружил у себя в заначке допиленный макрос, который исправляет экспортированные как текст данные в числа[vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
[/vba] Извините, ребята, не помню, с кем и где это "полировалось", но работает очень хорошо.
Тут обнаружил у себя в заначке допиленный макрос, который исправляет экспортированные как текст данные в числа[vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
[/vba] Извините, ребята, не помню, с кем и где это "полировалось", но работает очень хорошо.Alex_ST