F2 enter для всех ячеек excel

Цитата
Сообщение от 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) — нет.
Выполняю замену — срабатывает, записываю тот же самый код, выполняю — нет.
Что ещё можно сделать?
Спасибо!

Изменено: mo801.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-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (9)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • F формулы при вычислениях в excel
  • F word restaurant prices
  • F word must not
  • F word its many uses
  • F word for drinking