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

Вход

Регистрация

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

 

= Мир MS Excel/Авторазделение на целую и дробную часть с условием - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Авторазделение на целую и дробную часть с условием
KrosTj Дата: Воскресенье, 04.02.2018, 15:35 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день! Буду благодарен за помощь в решении вопроса. Есть таблица с парой клеток для которых выполняется условное форматирование с рядом правил, которое форматирует одни значения так, что одни появляются с 3 знаками после запятой, а другие с 5 знаками. Это достаточно удобно, но можно ли сделать так, чтобы при вводе числа я просто вводил 6 цифр, например, а ексел ещё автоматически определял с учётом условия сколько из этих 6 цифр составляют целую часть числа, а какие - дробную. Например, есть клетка которое должно выводить число где 4 первые цифры - целая часть, остальные 3 - дробная. Пример: ввожу 2311345, а результат вижу как 2311,345.
 
Ответить
СообщениеДобрый день! Буду благодарен за помощь в решении вопроса. Есть таблица с парой клеток для которых выполняется условное форматирование с рядом правил, которое форматирует одни значения так, что одни появляются с 3 знаками после запятой, а другие с 5 знаками. Это достаточно удобно, но можно ли сделать так, чтобы при вводе числа я просто вводил 6 цифр, например, а ексел ещё автоматически определял с учётом условия сколько из этих 6 цифр составляют целую часть числа, а какие - дробную. Например, есть клетка которое должно выводить число где 4 первые цифры - целая часть, остальные 3 - дробная. Пример: ввожу 2311345, а результат вижу как 2311,345.

Автор - KrosTj
Дата добавления - 04.02.2018 в 15:35
bmv98rus Дата: Воскресенье, 04.02.2018, 16:02 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Если без VBA то установить например такой формат #\,### , но если нужно потом вычисления производить то поделить на 1000.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 04.02.2018, 16:02
 
Ответить
СообщениеЕсли без VBA то установить например такой формат #\,### , но если нужно потом вычисления производить то поделить на 1000.

Автор - bmv98rus
Дата добавления - 04.02.2018 в 16:02
KrosTj Дата: Воскресенье, 04.02.2018, 16:25 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, не подскажещь как сделать чтобы в заданных клетках делилось автоматически при вводе?
 
Ответить
Сообщениеbmv98rus, не подскажещь как сделать чтобы в заданных клетках делилось автоматически при вводе?

Автор - KrosTj
Дата добавления - 04.02.2018 в 16:25
bmv98rus Дата: Воскресенье, 04.02.2018, 16:29 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Подскажу(те) . VBA код небольшой.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And IsNumeric(Target) Then
    Application.EnableEvents = False
    Target = Target / 1000
    Application.EnableEvents = True
End If
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 04.02.2018, 16:36
 
Ответить
СообщениеПодскажу(те) . VBA код небольшой.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And IsNumeric(Target) Then
    Application.EnableEvents = False
    Target = Target / 1000
    Application.EnableEvents = True
End If
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 04.02.2018 в 16:29
KrosTj Дата: Воскресенье, 04.02.2018, 17:54 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, благодарю, а можете теперь сказать куда это всё вставить мне?
 
Ответить
Сообщениеbmv98rus, благодарю, а можете теперь сказать куда это всё вставить мне?

Автор - KrosTj
Дата добавления - 04.02.2018 в 17:54
bmv98rus Дата: Воскресенье, 04.02.2018, 18:06 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
KrosTj, Я боюсь, что если вы это себе вставите, то может не заработать. Лучше поместить это в файл Excel, в модуль того листа, где вводятся эти магические числа. При этом сразу отмечу, что это работает в любой ячейке этого листа, там где надо и где - не надо. Когда нужно и когда нет. Например если ввести 123,456 получится 0,123456.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеKrosTj, Я боюсь, что если вы это себе вставите, то может не заработать. Лучше поместить это в файл Excel, в модуль того листа, где вводятся эти магические числа. При этом сразу отмечу, что это работает в любой ячейке этого листа, там где надо и где - не надо. Когда нужно и когда нет. Например если ввести 123,456 получится 0,123456.

Автор - bmv98rus
Дата добавления - 04.02.2018 в 18:06
KrosTj Дата: Воскресенье, 04.02.2018, 18:35 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, Мне бы вот метод, который делал бы такие превращения в выбранных мною ячейках.
 
Ответить
Сообщениеbmv98rus, Мне бы вот метод, который делал бы такие превращения в выбранных мною ячейках.

Автор - KrosTj
Дата добавления - 04.02.2018 в 18:35
bmv98rus Дата: Воскресенье, 04.02.2018, 18:58 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
тогда вот это [vba]
Код
If Target.Count = 1 And IsNumeric(Target) Then
[/vba] поменяется. туда добавится условия по вашим ячейкам.
На случай ввода дробного числа нужно вот так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And IsNumeric(Target) Then
    If Target = Int(Target) Then
        Application.EnableEvents = False
        Target.Value = Target.Value / 1000
        Application.EnableEvents = True
    End If
End If
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 04.02.2018, 18:59
 
Ответить
Сообщениетогда вот это [vba]
Код
If Target.Count = 1 And IsNumeric(Target) Then
[/vba] поменяется. туда добавится условия по вашим ячейкам.
На случай ввода дробного числа нужно вот так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And IsNumeric(Target) Then
    If Target = Int(Target) Then
        Application.EnableEvents = False
        Target.Value = Target.Value / 1000
        Application.EnableEvents = True
    End If
End If
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 04.02.2018 в 18:58
KrosTj Дата: Воскресенье, 04.02.2018, 19:49 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, я в таких кодах не опытный, можете просто решить задачу которая в этом файле.
К сообщению приложен файл: HJGGH.xlsx (11.2 Kb)
 
Ответить
Сообщениеbmv98rus, я в таких кодах не опытный, можете просто решить задачу которая в этом файле.

Автор - KrosTj
Дата добавления - 04.02.2018 в 19:49
bmv98rus Дата: Воскресенье, 04.02.2018, 20:29 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Бонусом контроль введенного количества через проверку данных
[p.s.]С примера и файла надо начинать[/p.s.]
К сообщению приложен файл: Copy_of_HJGGH.xlsm (17.1 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 04.02.2018, 20:30
 
Ответить
СообщениеБонусом контроль введенного количества через проверку данных
[p.s.]С примера и файла надо начинать[/p.s.]

Автор - bmv98rus
Дата добавления - 04.02.2018 в 20:29
KrosTj Дата: Воскресенье, 04.02.2018, 21:49 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, ок, а вот там пишет, что ошибка проверки данных при наличии значения - это можно исправить? И я нашёл ваш код, теперь, так как это был файл для примеров, можете ли вы обьяснить что мне нужно в нём поменять при вставлении в модуль подлинного файла если там просто другое расположение заголовка и соответственно клеток с самими значениями.
 
Ответить
Сообщениеbmv98rus, ок, а вот там пишет, что ошибка проверки данных при наличии значения - это можно исправить? И я нашёл ваш код, теперь, так как это был файл для примеров, можете ли вы обьяснить что мне нужно в нём поменять при вставлении в модуль подлинного файла если там просто другое расположение заголовка и соответственно клеток с самими значениями.

Автор - KrosTj
Дата добавления - 04.02.2018 в 21:49
bmv98rus Дата: Воскресенье, 04.02.2018, 22:16 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
пишет, что ошибка проверки данных

в том случае если количество сиволов не соответвует ожидаеммы 6 или 7, как указано в задании. Если этого не требуется, то уберите проверку данных. Добавил комменты, может поможет.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
'Cells(4, 2) - B4
'Cells(Rows.Count, 2) - последняя ячейка столбца B
If Target.Count = 1 And _
    Not Intersect(Target, Range(Cells(4, 2), Cells(Rows.Count, 2))) Is Nothing _
    And IsNumeric(Target) Then
    If Target = Int(Target) Then
        Application.EnableEvents = False
'        Cells(3, 2) - Ячейка B3 с заголовком.
        Target.Value = Target.Value / _
            IIf(Cells(3, 2) <> "XAUUSD" And Cells(3, 2) <> "USDJPY", 10 ^ 5, 10 ^ 3)
        Application.EnableEvents = True
    End If
End If
End Sub
[/vba]


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Воскресенье, 04.02.2018, 22:25
 
Ответить
Сообщение
пишет, что ошибка проверки данных

в том случае если количество сиволов не соответвует ожидаеммы 6 или 7, как указано в задании. Если этого не требуется, то уберите проверку данных. Добавил комменты, может поможет.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
'Cells(4, 2) - B4
'Cells(Rows.Count, 2) - последняя ячейка столбца B
If Target.Count = 1 And _
    Not Intersect(Target, Range(Cells(4, 2), Cells(Rows.Count, 2))) Is Nothing _
    And IsNumeric(Target) Then
    If Target = Int(Target) Then
        Application.EnableEvents = False
'        Cells(3, 2) - Ячейка B3 с заголовком.
        Target.Value = Target.Value / _
            IIf(Cells(3, 2) <> "XAUUSD" And Cells(3, 2) <> "USDJPY", 10 ^ 5, 10 ^ 3)
        Application.EnableEvents = True
    End If
End If
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 04.02.2018 в 22:16
KrosTj Дата: Понедельник, 05.02.2018, 12:03 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, благодарю, а скажи как мне можно выбрать кодом не 1 диапазон, а парочку другую, что вписать и куда
 
Ответить
Сообщениеbmv98rus, благодарю, а скажи как мне можно выбрать кодом не 1 диапазон, а парочку другую, что вписать и куда

Автор - KrosTj
Дата добавления - 05.02.2018 в 12:03
bmv98rus Дата: Понедельник, 05.02.2018, 12:13 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
[vba]
Код
Intersect(Target, Range(Cells(4, 2), Cells(Rows.Count, 2)), тут второй диапазон,  третий .....)
[/vba]
ну и это править
[vba]
Код
IIf(Cells(3, 2) <> "XAUUSD" And Cells(3, 2) <> "USDJPY", 10 ^ 5, 10 ^ 3)
[/vba]
В зависисмости что и как


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 05.02.2018, 12:14
 
Ответить
Сообщение[vba]
Код
Intersect(Target, Range(Cells(4, 2), Cells(Rows.Count, 2)), тут второй диапазон,  третий .....)
[/vba]
ну и это править
[vba]
Код
IIf(Cells(3, 2) <> "XAUUSD" And Cells(3, 2) <> "USDJPY", 10 ^ 5, 10 ^ 3)
[/vba]
В зависисмости что и как

Автор - bmv98rus
Дата добавления - 05.02.2018 в 12:13
KrosTj Дата: Понедельник, 05.02.2018, 12:33 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А что мне вписать в intersect если я хочу выбрать не отдельные клетки, диапазоны и тд, а столбец таблицы. В самом первом коде у вас было распространение этого макроса в ячейки B4 и до конца столбца B, а не до конца таблицы. Мне бы вот чтобы конкретно столбец таблицы захватывал.
 
Ответить
СообщениеА что мне вписать в intersect если я хочу выбрать не отдельные клетки, диапазоны и тд, а столбец таблицы. В самом первом коде у вас было распространение этого макроса в ячейки B4 и до конца столбца B, а не до конца таблицы. Мне бы вот чтобы конкретно столбец таблицы захватывал.

Автор - KrosTj
Дата добавления - 05.02.2018 в 12:33
bmv98rus Дата: Понедельник, 05.02.2018, 12:56 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
тогда проще RANGE("B4:B10") будет использовать. а в Intersect(Target, RANGE("B4:B10","D4:D10", .......) )


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениетогда проще RANGE("B4:B10") будет использовать. а в Intersect(Target, RANGE("B4:B10","D4:D10", .......) )

Автор - bmv98rus
Дата добавления - 05.02.2018 в 12:56
KrosTj Дата: Понедельник, 05.02.2018, 17:14 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, изначально я тоже подумал так сделать, но вдруг осознал, что не зря мне нужно указать в коде цель как именно столбец таблицы, чтобы иметь возможность в дальнейшем её продлевать и чтобы все сохранялось для новых строк, и здесь я извинюсь, так как немного неверно поставил условие задачи. Мне нужно так, как в этом файле, там изменился всего 1 аспект.
К сообщению приложен файл: 2275428.xlsm (17.0 Kb)


Сообщение отредактировал KrosTj - Понедельник, 05.02.2018, 17:15
 
Ответить
Сообщениеbmv98rus, изначально я тоже подумал так сделать, но вдруг осознал, что не зря мне нужно указать в коде цель как именно столбец таблицы, чтобы иметь возможность в дальнейшем её продлевать и чтобы все сохранялось для новых строк, и здесь я извинюсь, так как немного неверно поставил условие задачи. Мне нужно так, как в этом файле, там изменился всего 1 аспект.

Автор - KrosTj
Дата добавления - 05.02.2018 в 17:14
bmv98rus Дата: Понедельник, 05.02.2018, 20:19 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
KrosTj, Так нужен или не нужен контроль ввода 6 или 7 цифр? что делать если слева XAUUSD и ввели 6 цифр.
Или я не совсем понял и вы хотите чтоб на 6й или 7й цифре срабатывал автоввод значения?
Самое лучшее, это в примере выше написать, что ввели и что должно получится, при разном количестве цифр и разных кодах.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 05.02.2018, 20:28
 
Ответить
СообщениеKrosTj, Так нужен или не нужен контроль ввода 6 или 7 цифр? что делать если слева XAUUSD и ввели 6 цифр.
Или я не совсем понял и вы хотите чтоб на 6й или 7й цифре срабатывал автоввод значения?
Самое лучшее, это в примере выше написать, что ввели и что должно получится, при разном количестве цифр и разных кодах.

Автор - bmv98rus
Дата добавления - 05.02.2018 в 20:19
KrosTj Дата: Понедельник, 05.02.2018, 23:33 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 74
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, Автоввода не нужно, вот смотрите, представим что мы находимся в пустой клетке у которой слева XAUUSD, то на этом этапе эксел должен уже предполагать, что в этой клетке будет число с 4 знаками для целых и 3 для дроби. Я могу ввести либо все 7 цифр и ексел просто поставит запятую в нужном месте, а могу и вообще 1 цифру, в таком случае результатом при вводе должно быть 1000,000. Если ввожу только 3 цифры и они, к примеру, 123, то возврат - 1230,000. И только если вводятся больше 7 цифр - выдавать ошибку. Это было для XAUUSD, а остальные случаи по аналогии.
 
Ответить
Сообщениеbmv98rus, Автоввода не нужно, вот смотрите, представим что мы находимся в пустой клетке у которой слева XAUUSD, то на этом этапе эксел должен уже предполагать, что в этой клетке будет число с 4 знаками для целых и 3 для дроби. Я могу ввести либо все 7 цифр и ексел просто поставит запятую в нужном месте, а могу и вообще 1 цифру, в таком случае результатом при вводе должно быть 1000,000. Если ввожу только 3 цифры и они, к примеру, 123, то возврат - 1230,000. И только если вводятся больше 7 цифр - выдавать ошибку. Это было для XAUUSD, а остальные случаи по аналогии.

Автор - KrosTj
Дата добавления - 05.02.2018 в 23:33
bmv98rus Дата: Вторник, 06.02.2018, 00:16 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Есть микро особенность, настроено на работу с таблицей и в любой таблице в последнем столбце будет так работать, для того чтоб это исключить, надо закрепить или имя таблицы или точно знать где она расположена.

Используется макрос, проверка данных и условное форматирование.
К сообщению приложен файл: Copy_of_HJGGH1.xlsm (19.5 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 06.02.2018, 00:28
 
Ответить
СообщениеЕсть микро особенность, настроено на работу с таблицей и в любой таблице в последнем столбце будет так работать, для того чтоб это исключить, надо закрепить или имя таблицы или точно знать где она расположена.

Используется макрос, проверка данных и условное форматирование.

Автор - bmv98rus
Дата добавления - 06.02.2018 в 00:16
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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