Сообщение от smeckoi77
Как вариант:
Этот и другие подобные варианты я уже пробовал, в Эксель2010 работают, хоть и медленно, а в 2013 слетают.
Сообщение от Vlad999
замене «=» на «=» должно помочь
в 2013 не подходит, ругается на Cells(i,*100)*=*»=»*&*Cells(i,*100)**
Сообщение от bedvit
Выделить нужное, запустить…
Спасибо, обязательно протестирую Ваш вариант.
Пока что вопрос решил так: перекинул файл на машину с Эксель2010, и запустил найденной на каком-то из форумов
Код
Sub SelectionCalculate() Set ss = Selection For Each cl In Selection.Cells cl.Select SendKeys "{F2} {enter}" Next cl ss.Select End Sub
Может, кому пригодится. Всем спасибо за ответы.
mo8
Пользователь
Сообщений: 32
Регистрация: 17.04.2017
Здравствуйте!
Столкнулся с аналогичной проблемой, только с датами (гримасы 1С, я полагаю)
Существует решение в виде макроса?
Пробовал макросом нажимать F2-Enter — глючит
Пробовал делать макросом разбивку по столбцам — выдаёт ошибку.
Пробовал (выставлять общий формат и) прибавлять ноль — выдаёт ошибку.
Всячески пробовал (как предложено выше) менять один символ на другой, в моём случае — точку на точку,
а когда не помогло — точку на процент, а потом обратно — не работает.
Замена помогает только если делать её руками, макросом (replace) — нет.
Выполняю замену — срабатывает, записываю тот же самый код, выполняю — нет.
Что ещё можно сделать?
Спасибо!
Изменено: mo8 — 01.06.2021 16:12:30
Wo unrecht zu recht wird ist widerstand pflicht.
I have an Excel 2010 worksheet which has macros to copy data from other sheets into a specific format on another sheet.
The data copies but I have an issue with the formatting of cell ranges which hold date or time values.
The data originates from a database extract and everything is in text format. In my worksheet when I copy the date (via VBA) I apply the format "yyyy-mm-dd"
for dates and "hh:mm.ss.ss"
for times.
There is never a fixed amount of rows so I’ve set the VBA code to apply the formatting to the range of cells for example:
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
Not all cells in the range have the correct format, they will appear as 15/04/2014
not 2014-04-15
. If I manually select the cell and press the F2 then ENTER keys the format appears as I need. This happens randomly through the range and there could be thousands of rows so it is not practical to trawl though the worksheet manually hitting F2+ENTER on each one.
I’ve looked on the internet and found what should automatically do the F2+ENTER with VBA.
The code below is extracted from a larger set of lines of code, so the Dim
statements etc. are further up in the actual copy, but this should show the way I’ve tackled this so far.
Dim shAss As Worksheet
Dim AssDateLastRow As Long
Dim c As Range
'enter method to format 'Date Craftperson Assigned' and 'Time Craftperson Assigned' in Assignments sheet
'column "C" and "D", to formats required by Archibus: date "yyyy-mm-dd", time "hh:mm.ss.ss"
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
'ensure format is applied by forcing F2 edit of cell
For Each c In shAss.Range("C4:C" & AssDateLastRow).Cells
c.Select
SendKeys "{F2}", True
SendKeys "{ENTER}", True
'Selection.NumberFormat = "yyyy-mm-dd"
Next
When I run the code, the data copies into my worksheets but the dates and times are still in a mixed format.
The attempt at forcing the F2+ENTER via the VBA doesn’t seemed to have done anything. If done manually it works okay.
Below is an example of data copied from the results in the worksheet
Work Request Code Date Assigned Time Assigned
92926 19/05/2014 14:30.00.00
92927 19/05/2014 15:00.00.00
92928 2014-05-19 15:15.00.00
92934 2014-05-19 14:00.00.00
92527 12/05/2014 07:30
92528 12/05/2014 08:00
92804 2014-05-12 16:15
92805 2014-05-12 16:20.00.00
У меня есть рабочий лист Excel 2010, в котором есть макросы для копирования данных с других листов в определенный формат на другом листе.
Данные копируются, но у меня проблема с форматированием диапазонов ячеек, содержащих значения даты или времени.
Данные берутся из выдержки из базы данных, и все они представлены в текстовом формате. На моем листе, когда я копирую дату (через VBA), я применяю формат "yyyy-mm-dd"
для дат и "hh:mm.ss.ss"
для времени.
Никогда не бывает фиксированного количества строк, поэтому я установил код VBA, чтобы применить форматирование к диапазону ячеек, например:
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
Не все ячейки в диапазоне имеют правильный формат, они будут отображаться как 15/04/2014
, а не как 2014-04-15
. Если я вручную выберу ячейку и нажму F2, а затем ENTER, формат появится так, как мне нужно. Это происходит случайным образом в диапазоне, и могут быть тысячи строк, поэтому нецелесообразно просматривать рабочий лист вручную, нажимая F2+ENTER для каждой из них.
Я посмотрел в Интернете и нашел, что должно автоматически выполнять F2+ENTER с VBA.
Приведенный ниже код извлечен из большего набора строк кода, поэтому операторы Dim
и т. д. находятся дальше в фактической копии, но это должно показать, как я справился с этим до сих пор.
Dim shAss As Worksheet
Dim AssDateLastRow As Long
Dim c As Range
'enter method to format 'Date Craftperson Assigned' and 'Time Craftperson Assigned' in Assignments sheet
'column "C" and "D", to formats required by Archibus: date "yyyy-mm-dd", time "hh:mm.ss.ss"
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
'ensure format is applied by forcing F2 edit of cell
For Each c In shAss.Range("C4:C" & AssDateLastRow).Cells
c.Select
SendKeys "{F2}", True
SendKeys "{ENTER}", True
'Selection.NumberFormat = "yyyy-mm-dd"
Next
Когда я запускаю код, данные копируются в мои рабочие листы, но даты и время все еще находятся в смешанном формате.
Попытка принудительно нажать F2+ENTER через VBA, похоже, ничего не дала. Если вручную, то нормально.
Ниже приведен пример данных, скопированных из результатов на листе.
Work Request Code Date Assigned Time Assigned
92926 19/05/2014 14:30.00.00
92927 19/05/2014 15:00.00.00
92928 2014-05-19 15:15.00.00
92934 2014-05-19 14:00.00.00
92527 12/05/2014 07:30
92528 12/05/2014 08:00
92804 2014-05-12 16:15
92805 2014-05-12 16:20.00.00
13 ответов
Я использую этот простой макрос, чтобы применить F2 + Enter к текущему выбранному диапазону:
Sub ApplyF2()
Selection.Value = Selection.FormulaR1C1
End Sub
14
Thomas F.
5 Дек 2016 в 17:05
Я могу придумать два варианта, чтобы заставить Excel применить форматирование к ячейкам за один шаг.
Первый заключается в использовании функции Текст в столбцы, даже если в столбце нет ничего для разделения. Второй вариант — скопировать значение 1 и вставить его в ячейки с помощью параметра Специальная вставка — Умножение.
Хотя любой метод должен вызвать обновление форматирования ячейки, я бы склонялся к первому варианту. Это на случай, если некоторые из ваших дат хранятся в виде текста.
Sub Format_Text_to_Columns()
Dim AssDateLastRow As Long
AssDateLastRow = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd;@"
'Set the format
Range("C4:C" & AssDateLastRow).Select
Selection.TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, _
Space:=True, FieldInfo:=Array(1, 5)
'Use text to columns to force a format update
End Sub
Sub Format_Paste_Special_Multiply()
Dim AssDateLastRow As Long
AssDateLastRow = ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd;@"
'Set the format
Range("C1").FormulaR1C1 = "1"
Range("C1").Copy
Range("C4:C" & AssDateLastRow).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply
Application.CutCopyMode = False
Range("C1").ClearContents
'Multiply the dates by 1 to force a format update
End Sub
3
Robert Mearns
6 Июн 2014 в 17:52
Я тоже изо всех сил пытался заставить это работать. Моя проблема заключалась не только в датах, но и в данных с одинарной кавычкой перед ней. То, что я взломал вместе, отлично работает для меня. Он очень быстро очищает более 70 000 ячеек. Надеюсь, это сработает для вас:
(вы измените диапазон и тому подобное в соответствии с вашими потребностями)
Dim MyRange As Range
Set MyRange = Range(Cells(2, 7), [G1].End(xlDown))
For Each MyRange In MyRange.Cells
'Mimic F2 without SendKeys
MyRange.Value = MyRange.Value
Next
3
Taptronic
10 Июн 2014 в 05:48
Это сработало для меня.
Dim r As Range
Dim n As Integer
Dim AssDateLastRow As Long
AssDateLastRow = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row
Set r = Range("E2:E" & AssDateLastRow)
r.Select
r.NumberFormat = "ddmmyyyy;@"
r.Select
For n = 1 To r.Rows.Count
SendKeys "{F2}", True
SendKeys "{ENTER}", True
Next n
2
RafaEsp
3 Сен 2015 в 17:44
Sub RefreshCells()
Dim r As Range, rr As Range
Set rr = Selection
For Each r In rr
r.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
Application.SendKeys "+{ENTER}"
DoEvents
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.SendKeys "{ENTER}"
DoEvents
Next
End Sub
1
DaFois
15 Май 2018 в 05:22
Для решения этой проблемы можно использовать Текст в столбцы.
1) Выделите столбец данных
2) Перейдите к Данные -> Текст в столбцы -> С разделителями -> (отменить выбор всего) -> Далее
3) На странице 3 мастера установите Формат данных столбца YMD.
4) ОК
1
M_F
19 Май 2020 в 17:17
Кажется странным, что вам нужно будет отправить клавиши F2 + Enter. Какое форматирование перед запуском макроса? Попробуйте отформатировать таким образом весь столбец (это не повлияет на текст).
Columns("C:C").NumberFormat = "yyyy-mm-dd"
0
MatthewHagemann
5 Июн 2014 в 17:11
Моя вариация
n = Selection.Rows.count
Dim r1 As range, rv As range
Set r1 = Selection.Cells(1, 1)
For I = 1 To n
Set rv = r1.offset(I - 1, 0)
vali = rv.value
IsNumeric(vali) Then
vali = CDbl(vali)
rv.value = 0
rv.value = vali
End If
0
anefeletos
28 Мар 2016 в 23:21
Попробуйте нажать F9 или Файл-Опции-формулы-расчет книги-автоматический
0
user6462924
14 Июн 2016 в 09:20
Я просто установил ячейку справа от верхней записи, равную формуле, которая умножает проблемную ячейку на 1. Эта новая ячейка была правильным числом, поэтому двойной щелчок по ручке расширил ее вниз на весь столбец, исправив их все!
0
Bill LaPrise
11 Апр 2018 в 01:01
Sendkeys не стабильны. Лучше всего сохранить текст в буфер обмена и вставить его.
См. здесь о том, как хранить значения в буфере обмена
Sub CopyText(Text As String)
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
MSForms_DataObject.SetText Text
MSForms_DataObject.PutInClipboard
Set MSForms_DataObject = Nothing
End Sub
Sub Test()
CopyText (ActiveCell.Value)
ActiveCell.PasteSpecial
End Sub
'In place of active cell, you may pass a range
0
Jayanth
6 Сен 2018 в 05:13
Это работает для меня
Sub f2Cells(sel as Range)
Dim rng as Range
On Error GoTo exitHere
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
For Each rng In sel.Cells
If Not Intersect(sel, Application.Range(rng.Address)) Is Nothing And _
Application.Range(rng.Address).EntireColumn.Hidden = False And _
Application.Range(rng.Address).EntireRow.Hidden = False Then
Application.Range(rng.Address).Application.SendKeys "({F2}{ENTER})", True
End If
Next rng
exitHere:
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
Application.SendKeys "{NUMLOCK}", True
End Sub
Затем из вашей функции вы можете просто позвонить
f2Cells shAss.Range("C4:C" & AssDateLastRow)
0
IPI Paul
7 Янв 2022 в 03:45
Я понял, просто
Выберите все ячейки, которые вы хотите нажать F2 и Enter, и запустите этот короткий макрос:
Подпрограмма AutoF2Enter()
Выбор.Значение = Выбор.Значение
Конец сабвуфера
Работает по дате и числам!
50 000 ячеек в секунду!
-3
Tomy
13 Фев 2019 в 03:52
Обычно при редактировании ячейки с содержимым вам нужно дважды щелкнуть по ней, чтобы сначала перейти в режим редактирования. Для редактирования ячейки с длинным содержимым, превышающим размер ячейки, вам нужно перейти в режим редактирования, а затем найти точное положение, чтобы внести изменения. В этом руководстве представлены три метода, которые могут помочь легко редактировать ячейку в Excel.
Введите или отредактируйте ячейку, нажав клавишу F2
Вы можете нажать F2 клавиша для перехода в режим редактирования ячейки без двойного щелчка по ней.
С ней легко работать, вам просто нужно выбрать ячейку, которую вы хотите отредактировать, и нажать клавишу F2, и курсор будет расположен в конце значения ячейки, после чего вы можете сразу отредактировать ячейку.
Внимание: Вам нужно нажать F2 нажмите несколько раз для редактирования всех ячеек в списке.
Наблюдения и советы этой статьи мы подготовили на основании опыта команды Расширенная панель редактирования полезности Kutools for Excel может помочь вам легко просмотреть и отредактировать длинную ячейку содержимого без двойного щелчка по ячейке или увеличения панели формул.
Скачайте и попробуйте прямо сейчас! (30-дневная бесплатная трасса)
Введите или отредактируйте ячейку с кодом VBA
Если нажатие клавиши F2 отнимает у вас много времени, вы можете попробовать следующий метод VBA.
1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.
2. в Microsoft Visual Basic для приложений окна, пожалуйста, дважды щелкните имя листа (ячейки, которые необходимо отредактировать, находящиеся на этом листе) на левой панели, чтобы открыть окно кода. Затем скопируйте и вставьте в окно приведенный ниже код VBA.
Код VBA: введите или отредактируйте ячейку без двойного щелчка по ней
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Update by Extendoffice 20190809
SendKeys "{F2}"
End Sub
3. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.
С этого момента при выборе ячейки или нажатии клавиши Enter для перехода к следующей ячейке на этом листе она автоматически переходит в режим редактирования.
Легко редактируйте длинную ячейку содержимого с помощью потрясающей функции
1. Включите эту функцию, нажав Кутулс > Показать спрятать > Расширенная панель редактирования.
С этого момента при выборе ячейки будет всплывать окно, в котором отображается все ее содержимое.
Прямое редактирование содержимого в окне одновременно вступит в силу для ячейки.
Функции: Нажмите Кутулс > Расширенная панель редактирования чтобы выключить эту функцию.
Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (9)
Оценок пока нет. Оцените первым!