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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматически прописать единицы измерений в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Автоматически прописать единицы измерений в ячейке (Формулы/Formulas)
Автоматически прописать единицы измерений в ячейке
Mari3594 Дата: Суббота, 30.07.2022, 12:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Доброго времени суток! Как автоматически прописать единицы измерений в ячейке эксель? Пыталась делать через формат ячеек, но много условий.
1000 = 1 л
1500 = 1 л 500 мл
500 = 500 мл
0=0
 
Ответить
СообщениеДоброго времени суток! Как автоматически прописать единицы измерений в ячейке эксель? Пыталась делать через формат ячеек, но много условий.
1000 = 1 л
1500 = 1 л 500 мл
500 = 500 мл
0=0

Автор - Mari3594
Дата добавления - 30.07.2022 в 12:44
jakim Дата: Суббота, 30.07.2022, 15:55 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1108
Репутация: 294 ±
Замечаний: 0% ±

Excel 2010
Смотрите в приложении вариант с Power Query

[vba]
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}}),
    #"Inserted Modulo" = Table.AddColumn(#"Changed Type", "Inserted Modulo", each Number.Mod([Column1], 1000), type number),
    #"Inserted Integer-Division" = Table.AddColumn(#"Inserted Modulo", "Inserted Integer-Division", each Number.IntegerDivide([Column1], 1000), Int64.Type),
    #"Added Conditional Column" = Table.AddColumn(#"Inserted Integer-Division", "Custom", each if [Inserted Modulo] > 0 then "мл" else if [Inserted Modulo] = 0 then null else [Inserted Modulo] ),
    #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "Custom.1", each if [#"Inserted Integer-Division"] >= 1 then "л" else if [#"Inserted Integer-Division"] = 0 then null else null ),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Conditional Column1",{"Column1", "Inserted Integer-Division", "Inserted Modulo", "Custom.1", "Custom"}),
    #"Replaced Value" = Table.ReplaceValue(#"Reordered Columns",0,null,Replacer.ReplaceValue,{"Inserted Integer-Division"}),
    #"Reordered Columns1" = Table.ReorderColumns(#"Replaced Value",{"Column1", "Inserted Integer-Division", "Custom.1", "Inserted Modulo", "Custom"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Reordered Columns1",0,null,Replacer.ReplaceValue,{"Inserted Modulo"}),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Replaced Value1", {{"Inserted Integer-Division", type text}, {"Inserted Modulo", type text}}, "lt-LT"),{"Inserted Integer-Division", "Custom.1", "Inserted Modulo", "Custom"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged")
in
    #"Merged Columns"
[/vba]
К сообщению приложен файл: l_ml.xlsx(16.3 Kb)
 
Ответить
Сообщение
Смотрите в приложении вариант с Power Query

[vba]
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}}),
    #"Inserted Modulo" = Table.AddColumn(#"Changed Type", "Inserted Modulo", each Number.Mod([Column1], 1000), type number),
    #"Inserted Integer-Division" = Table.AddColumn(#"Inserted Modulo", "Inserted Integer-Division", each Number.IntegerDivide([Column1], 1000), Int64.Type),
    #"Added Conditional Column" = Table.AddColumn(#"Inserted Integer-Division", "Custom", each if [Inserted Modulo] > 0 then "мл" else if [Inserted Modulo] = 0 then null else [Inserted Modulo] ),
    #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "Custom.1", each if [#"Inserted Integer-Division"] >= 1 then "л" else if [#"Inserted Integer-Division"] = 0 then null else null ),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Conditional Column1",{"Column1", "Inserted Integer-Division", "Inserted Modulo", "Custom.1", "Custom"}),
    #"Replaced Value" = Table.ReplaceValue(#"Reordered Columns",0,null,Replacer.ReplaceValue,{"Inserted Integer-Division"}),
    #"Reordered Columns1" = Table.ReorderColumns(#"Replaced Value",{"Column1", "Inserted Integer-Division", "Custom.1", "Inserted Modulo", "Custom"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Reordered Columns1",0,null,Replacer.ReplaceValue,{"Inserted Modulo"}),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Replaced Value1", {{"Inserted Integer-Division", type text}, {"Inserted Modulo", type text}}, "lt-LT"),{"Inserted Integer-Division", "Custom.1", "Inserted Modulo", "Custom"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged")
in
    #"Merged Columns"
[/vba]

Автор - jakim
Дата добавления - 30.07.2022 в 15:55
jakim Дата: Суббота, 30.07.2022, 16:05 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1108
Репутация: 294 ±
Замечаний: 0% ±

Excel 2010
Добавил вариант с формулой

Код
=CONCATENATE(INT(H2/1000);" ";"л";"  ";MOD(H2;1000);" ";"мл")
К сообщению приложен файл: 8140617.xlsx(17.2 Kb)
 
Ответить
Сообщение
Добавил вариант с формулой

Код
=CONCATENATE(INT(H2/1000);" ";"л";"  ";MOD(H2;1000);" ";"мл")

Автор - jakim
Дата добавления - 30.07.2022 в 16:05
прохожий2019 Дата: Суббота, 30.07.2022, 20:44 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 892
Репутация: 216 ±
Замечаний: 0% ±

365 Beta Channel
вариант с Power Query

[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    f=(x)=>[    a = List.Select(List.Zip({{Number.IntegerDivide(x,1000),Number.Mod(x,1000)},{"л","мл"}}),(i)=>i{0}>0),
                b = Text.Combine(List.Transform(List.Combine(a),Text.From)," ")][b],
    to = Table.AddColumn(from,"format",(r)=>f(r[Column1]))
in
    to
[/vba]

хотя я бы просто ограничился форматом [=0]0;[<1000]0_-\мл;#_-л ###_-\мл
К сообщению приложен файл: 9339200.xlsx(20.3 Kb)


Сообщение отредактировал прохожий2019 - Суббота, 30.07.2022, 22:34
 
Ответить
Сообщение
вариант с Power Query

[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    f=(x)=>[    a = List.Select(List.Zip({{Number.IntegerDivide(x,1000),Number.Mod(x,1000)},{"л","мл"}}),(i)=>i{0}>0),
                b = Text.Combine(List.Transform(List.Combine(a),Text.From)," ")][b],
    to = Table.AddColumn(from,"format",(r)=>f(r[Column1]))
in
    to
[/vba]

хотя я бы просто ограничился форматом [=0]0;[<1000]0_-\мл;#_-л ###_-\мл

Автор - прохожий2019
Дата добавления - 30.07.2022 в 20:44
Mari3594 Дата: Четверг, 04.08.2022, 10:04 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Цитата прохожий2019, 30.07.2022 в 20:44, в сообщении № 4 ()
хотя я бы просто ограничился форматом [=0]0;[<1000]0_-\мл;#_-л ###_-\мл

Какой у вас эксель? Мой 2007 отказался формат обработать.
 
Ответить
Сообщение
Цитата прохожий2019, 30.07.2022 в 20:44, в сообщении № 4 ()
хотя я бы просто ограничился форматом [=0]0;[<1000]0_-\мл;#_-л ###_-\мл

Какой у вас эксель? Мой 2007 отказался формат обработать.

Автор - Mari3594
Дата добавления - 04.08.2022 в 10:04
прохожий2019 Дата: Четверг, 04.08.2022, 10:47 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 892
Репутация: 216 ±
Замечаний: 0% ±

365 Beta Channel
Мой 2007 отказался
язык форматов не менялся с основания Excel - как вы использовали формат? куда вводили? что за ошибка?
 
Ответить
Сообщение
Мой 2007 отказался
язык форматов не менялся с основания Excel - как вы использовали формат? куда вводили? что за ошибка?

Автор - прохожий2019
Дата добавления - 04.08.2022 в 10:47
Mari3594 Дата: Четверг, 04.08.2022, 11:09 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Цитата прохожий2019, 04.08.2022 в 10:47, в сообщении № 6 ()
язык форматов не менялся с основания Excel - как вы использовали формат? куда вводили? что за ошибка?


Не правильно объясняю. Формат работает. Можно сделать так чтобы 2 л 000 мл выглядело как 2 л ?
Я пытаюсь по аналогии сделать второй формат для килограммов и граммов. Меняю только буковки и не работает.
К сообщению приложен файл: 6974491.jpg(10.1 Kb) · 1398701.jpg(90.0 Kb)
 
Ответить
Сообщение
Цитата прохожий2019, 04.08.2022 в 10:47, в сообщении № 6 ()
язык форматов не менялся с основания Excel - как вы использовали формат? куда вводили? что за ошибка?


Не правильно объясняю. Формат работает. Можно сделать так чтобы 2 л 000 мл выглядело как 2 л ?
Я пытаюсь по аналогии сделать второй формат для килограммов и граммов. Меняю только буковки и не работает.

Автор - Mari3594
Дата добавления - 04.08.2022 в 11:09
прохожий2019 Дата: Четверг, 04.08.2022, 11:15 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 892
Репутация: 216 ±
Замечаний: 0% ±

365 Beta Channel
Можно сделать так чтобы 2 л 000 мл выглядело как 2 л
форматом - нет

Меняю только буковки и не работает.

перед г - обратный слеш, в том числе и к\г
 
Ответить
Сообщение
Можно сделать так чтобы 2 л 000 мл выглядело как 2 л
форматом - нет

Меняю только буковки и не работает.

перед г - обратный слеш, в том числе и к\г

Автор - прохожий2019
Дата добавления - 04.08.2022 в 11:15
Mari3594 Дата: Четверг, 04.08.2022, 11:27 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Цитата прохожий2019, 04.08.2022 в 11:15, в сообщении № 8 ()

перед г - обратный слеш, в том числе и к\г

Сработало. Спасибо большое!
 
Ответить
Сообщение
Цитата прохожий2019, 04.08.2022 в 11:15, в сообщении № 8 ()

перед г - обратный слеш, в том числе и к\г

Сработало. Спасибо большое!

Автор - Mari3594
Дата добавления - 04.08.2022 в 11:27
Mari3594 Дата: Четверг, 04.08.2022, 11:28 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Нужно прочитать про Power Query. Спасибо что не прошли мимо. Вопрос решён.
 
Ответить
СообщениеНужно прочитать про Power Query. Спасибо что не прошли мимо. Вопрос решён.

Автор - Mari3594
Дата добавления - 04.08.2022 в 11:28
прохожий2019 Дата: Четверг, 04.08.2022, 11:31 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 892
Репутация: 216 ±
Замечаний: 0% ±

365 Beta Channel
Нужно прочитать про Power Query

источники мудроты
 
Ответить
Сообщение
Нужно прочитать про Power Query

источники мудроты

Автор - прохожий2019
Дата добавления - 04.08.2022 в 11:31
Nic70y Дата: Четверг, 04.08.2022, 12:14 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 7646
Репутация: 1827 ±
Замечаний: 0% ±

Excel 2010
Нужно прочитать про Power Query
не, не надо)
Мой 2007 отказался

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    x = Target.Column           'определяем столбец, в который вводиться значение
    If x > 1 Then Exit Sub      'если это не 1й столбец (A) выходим из макроса
    a = Target.Value            'значение ячейки
    y = IsNumeric(a)            'в ячейке число?
    If y = False Then Exit Sub  'не число - выходим из макроса
    b = a Mod 1000              'остаток от деления на 1000
    c = a - b                   'разница
    u = ""                      'литры - пока пусто
    v = ""                      'мл - пока пусто
    If a = 0 Then   'если 0, тогда:
        Target.NumberFormat = "General" 'общий формат
    Else            'если не 0, тогда:
        If c > 0 Then u = Int(a / 1000) & " л "     'непустые литры
        If b > 0 Then v = b & " мл"                 'не пустые мл
        d = Application.Trim("""" & u & v & """")   'соединяем литры с мл
        Target.NumberFormat = d                     'присвоим формат ячейке
    End If
End Sub
[/vba]
К сообщению приложен файл: 8874262.xlsm(16.1 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 04.08.2022, 12:18
 
Ответить
Сообщение
Нужно прочитать про Power Query
не, не надо)
Мой 2007 отказался

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    x = Target.Column           'определяем столбец, в который вводиться значение
    If x > 1 Then Exit Sub      'если это не 1й столбец (A) выходим из макроса
    a = Target.Value            'значение ячейки
    y = IsNumeric(a)            'в ячейке число?
    If y = False Then Exit Sub  'не число - выходим из макроса
    b = a Mod 1000              'остаток от деления на 1000
    c = a - b                   'разница
    u = ""                      'литры - пока пусто
    v = ""                      'мл - пока пусто
    If a = 0 Then   'если 0, тогда:
        Target.NumberFormat = "General" 'общий формат
    Else            'если не 0, тогда:
        If c > 0 Then u = Int(a / 1000) & " л "     'непустые литры
        If b > 0 Then v = b & " мл"                 'не пустые мл
        d = Application.Trim("""" & u & v & """")   'соединяем литры с мл
        Target.NumberFormat = d                     'присвоим формат ячейке
    End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 04.08.2022 в 12:14
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Автоматически прописать единицы измерений в ячейке (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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