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

Вход

Регистрация

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

 

= Мир MS Excel/функция .Subscript по всему столбцу - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » функция .Subscript по всему столбцу (Макросы/Sub)
функция .Subscript по всему столбцу
grh15708 Дата: Пятница, 23.07.2021, 23:08 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Доброго дня, Уважаемые знатоки!

Суть вопроса:
Есть таблица, в столбце В которой стоят единицы измерения в виде м2 м3 шт т кг и т.д. пример здесь .
Мне необходимо привести из такого вида как ЕСТЬ , в вид который мне НУЖЕН .

Макрорекордером получил код, убрал ненужное и в итоге получился вполне рабочий код:
[vba]
Код
Sub м2()

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "м2"
    With ActiveCell.Characters(Start:=1, Length:=1).Font
        .Subscript = False
    End With
    With ActiveCell.Characters(Start:=2, Length:=1).Font
        .Superscript = True
    End With

End Sub
[/vba]

Но этот код работает только на какую-либо указанную ячейку столбца "В", а мне нужно чтобы преобразование происходило по всему столбцу "В" и не только м2, но и м3.
Пробовал выделять диапазон Range("B:В").Select - не работает...
Подправьте пожалуйста макрос, чтобы во всем столбце В происходило преобразование м2 и м3 в нужный мне формат, при этом игнорировались все остальные надписи, пустые строки, а также объединенные строки. Таблица может быть очень длинной.

Файл-пример прицепляю.

Спасибо
К сообщению приложен файл: 9447498.xls (29.5 Kb)
 
Ответить
СообщениеДоброго дня, Уважаемые знатоки!

Суть вопроса:
Есть таблица, в столбце В которой стоят единицы измерения в виде м2 м3 шт т кг и т.д. пример здесь .
Мне необходимо привести из такого вида как ЕСТЬ , в вид который мне НУЖЕН .

Макрорекордером получил код, убрал ненужное и в итоге получился вполне рабочий код:
[vba]
Код
Sub м2()

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "м2"
    With ActiveCell.Characters(Start:=1, Length:=1).Font
        .Subscript = False
    End With
    With ActiveCell.Characters(Start:=2, Length:=1).Font
        .Superscript = True
    End With

End Sub
[/vba]

Но этот код работает только на какую-либо указанную ячейку столбца "В", а мне нужно чтобы преобразование происходило по всему столбцу "В" и не только м2, но и м3.
Пробовал выделять диапазон Range("B:В").Select - не работает...
Подправьте пожалуйста макрос, чтобы во всем столбце В происходило преобразование м2 и м3 в нужный мне формат, при этом игнорировались все остальные надписи, пустые строки, а также объединенные строки. Таблица может быть очень длинной.

Файл-пример прицепляю.

Спасибо

Автор - grh15708
Дата добавления - 23.07.2021 в 23:08
прохожий2019 Дата: Суббота, 24.07.2021, 00:53 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1241
Репутация: 317 ±
Замечаний: 0% ±

365 Beta Channel
[vba]
Код
Sub м2()
    For Each cell In Selection
        p = InStr(cell, "м2")
        If p > 0 Then cell.Characters(Start:=p + 1, Length:=1).Font.Superscript = True
        p = InStr(cell, "м3")
        If p > 0 Then cell.Characters(Start:=p + 1, Length:=1).Font.Superscript = True
    Next
End Sub
[/vba]


Сообщение отредактировал прохожий2019 - Суббота, 24.07.2021, 00:54
 
Ответить
Сообщение[vba]
Код
Sub м2()
    For Each cell In Selection
        p = InStr(cell, "м2")
        If p > 0 Then cell.Characters(Start:=p + 1, Length:=1).Font.Superscript = True
        p = InStr(cell, "м3")
        If p > 0 Then cell.Characters(Start:=p + 1, Length:=1).Font.Superscript = True
    Next
End Sub
[/vba]

Автор - прохожий2019
Дата добавления - 24.07.2021 в 00:53
grh1 Дата: Суббота, 24.07.2021, 06:35 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
прохожий2019, Код работает, когда выделяю всю таблицу... это немного не то... можно как-то сделать без выделения всей таблицы, потому что таблица очень большая на 30-80 листов.
Может как-то просто в коде указать диапазон "В:В"
Или может For Counter = 1 To 120
Или For Each c In Worksheets("Лист1").Range("B:B").Cells

Спасибо


Vadym Gorokh

Сообщение отредактировал grh1 - Суббота, 24.07.2021, 07:12
 
Ответить
Сообщениепрохожий2019, Код работает, когда выделяю всю таблицу... это немного не то... можно как-то сделать без выделения всей таблицы, потому что таблица очень большая на 30-80 листов.
Может как-то просто в коде указать диапазон "В:В"
Или может For Counter = 1 To 120
Или For Each c In Worksheets("Лист1").Range("B:B").Cells

Спасибо

Автор - grh1
Дата добавления - 24.07.2021 в 06:35
grh1 Дата: Суббота, 24.07.2021, 13:23 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
прохожий2019,
Извините, но grh15708 это я же т.е. grh1... просто вчера как-то зашел нестандартно ... еще удивился своему нику, но не придал значения.
А сегодня включил комп и зашел под своим логином, а зайти на grh15708 не могу, т.к. парольвчера даже не помню. Так что если можете, то ответьте пожалуйста на пост № 3.

Спасибо


Vadym Gorokh
 
Ответить
Сообщениепрохожий2019,
Извините, но grh15708 это я же т.е. grh1... просто вчера как-то зашел нестандартно ... еще удивился своему нику, но не придал значения.
А сегодня включил комп и зашел под своим логином, а зайти на grh15708 не могу, т.к. парольвчера даже не помню. Так что если можете, то ответьте пожалуйста на пост № 3.

Спасибо

Автор - grh1
Дата добавления - 24.07.2021 в 13:23
nilem Дата: Суббота, 24.07.2021, 18:06 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
grh1, привет
попробуйте
[vba]
Код
Sub ertM()
Dim x, i&
x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value
For i = 1 To UBound(x)
    If x(i, 1) Like "м#" Then Cells(i, 2).Characters(2, 1).Font.Superscript = True
Next i
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеgrh1, привет
попробуйте
[vba]
Код
Sub ertM()
Dim x, i&
x = Range("B1", Cells(Rows.Count, 2).End(xlUp)).Value
For i = 1 To UBound(x)
    If x(i, 1) Like "м#" Then Cells(i, 2).Characters(2, 1).Font.Superscript = True
Next i
End Sub
[/vba]

Автор - nilem
Дата добавления - 24.07.2021 в 18:06
grh1 Дата: Суббота, 24.07.2021, 18:12 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
nilem, всё как всегда ОТЛИЧНО!!!
Спасибо.
С Вашего позволения напишу Вам в личку - есть небольшая коммерческая работа.


Vadym Gorokh
 
Ответить
Сообщениеnilem, всё как всегда ОТЛИЧНО!!!
Спасибо.
С Вашего позволения напишу Вам в личку - есть небольшая коммерческая работа.

Автор - grh1
Дата добавления - 24.07.2021 в 18:12
grh1 Дата: Понедельник, 26.07.2021, 13:42 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
nilem, доброго дня!
К сожалению Ваш код не совсем корректно работает, на бОльших портянках столбца "В".
Прикрепляю файл, выполните Ваш код - увидим, что преобразование происходит через раз, плюс "кг" буква "г" улетает в надстрочку, иногда в "шт" буква "т" становится надстрочной.
Подправьте пожалуйста.

Спасибо.
К сообщению приложен файл: __2.xls (39.5 Kb)


Vadym Gorokh
 
Ответить
Сообщениеnilem, доброго дня!
К сожалению Ваш код не совсем корректно работает, на бОльших портянках столбца "В".
Прикрепляю файл, выполните Ваш код - увидим, что преобразование происходит через раз, плюс "кг" буква "г" улетает в надстрочку, иногда в "шт" буква "т" становится надстрочной.
Подправьте пожалуйста.

Спасибо.

Автор - grh1
Дата добавления - 26.07.2021 в 13:42
Serge_007 Дата: Понедельник, 26.07.2021, 14:17 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
...есть небольшая коммерческая работа
grh1, для платных заказов есть соответствующий раздел Работа / Фриланс


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
...есть небольшая коммерческая работа
grh1, для платных заказов есть соответствующий раздел Работа / Фриланс

Автор - Serge_007
Дата добавления - 26.07.2021 в 14:17
grh1 Дата: Понедельник, 26.07.2021, 14:19 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
Serge_007, прошу извинить, исправлюсь.


Vadym Gorokh
 
Ответить
СообщениеSerge_007, прошу извинить, исправлюсь.

Автор - grh1
Дата добавления - 26.07.2021 в 14:19
nilem Дата: Понедельник, 26.07.2021, 17:30 | Сообщение № 10
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
grh1, привет
вот здесь:
[vba]
Код
x = Range("B5", Cells(Rows.Count, 2).End(xlUp)).Value
[/vba]
зачем изменили на В5? Верните В1 )


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеgrh1, привет
вот здесь:
[vba]
Код
x = Range("B5", Cells(Rows.Count, 2).End(xlUp)).Value
[/vba]
зачем изменили на В5? Верните В1 )

Автор - nilem
Дата добавления - 26.07.2021 в 17:30
grh1 Дата: Понедельник, 26.07.2021, 17:41 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 40% ±

2019
nilem, всё работает как надо... это мои ручки-крючки.
Спасибо

Закрываем тему


Vadym Gorokh
 
Ответить
Сообщениеnilem, всё работает как надо... это мои ручки-крючки.
Спасибо

Закрываем тему

Автор - grh1
Дата добавления - 26.07.2021 в 17:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » функция .Subscript по всему столбцу (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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