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

Вход

Регистрация

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

 

= Мир MS Excel/Извлечение определенных числовых значений из ячейки - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Извлечение определенных числовых значений из ячейки
Da_Shaaa Дата: Понедельник, 06.04.2015, 14:13 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, знатоки!
У меня возникла проблема при извлечении определенного числового значения из ячейки (в ней много чисел; текст и количество символов всегда неустойчивое).
Детали в файле.
Заранее благодарю за помощь!

С уважением, Дарья.
К сообщению приложен файл: 8282532.xlsx (8.4 Kb)
 
Ответить
СообщениеЗдравствуйте, знатоки!
У меня возникла проблема при извлечении определенного числового значения из ячейки (в ней много чисел; текст и количество символов всегда неустойчивое).
Детали в файле.
Заранее благодарю за помощь!

С уважением, Дарья.

Автор - Da_Shaaa
Дата добавления - 06.04.2015 в 14:13
Manyasha Дата: Понедельник, 06.04.2015, 14:30 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Da_Shaaa, формулами затрудняюсь решить Вашу задачу, если VBA не боитесь, то можно так:[vba]
Код
Function ПоследнееЧисло(cell As Range)
     If cell.Count > 1 Then ПоследнееЧисло = "": Exit Function
     Dim temp() As String
     temp = Split(cell, ",")
     ПоследнееЧисло = CLng(IIf(IsNumeric(temp(UBound(temp))), temp(UBound(temp)), temp(UBound(temp) - 1)))
End Function
[/vba]
Возвращает последнее целое число из строки или число до последней запятой
К сообщению приложен файл: 8282532_udf.xlsm (14.5 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеDa_Shaaa, формулами затрудняюсь решить Вашу задачу, если VBA не боитесь, то можно так:[vba]
Код
Function ПоследнееЧисло(cell As Range)
     If cell.Count > 1 Then ПоследнееЧисло = "": Exit Function
     Dim temp() As String
     temp = Split(cell, ",")
     ПоследнееЧисло = CLng(IIf(IsNumeric(temp(UBound(temp))), temp(UBound(temp)), temp(UBound(temp) - 1)))
End Function
[/vba]
Возвращает последнее целое число из строки или число до последней запятой

Автор - Manyasha
Дата добавления - 06.04.2015 в 14:30
МВТ Дата: Понедельник, 06.04.2015, 14:41 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Почти так же получилось, но передаю в качестве аргумента строку
[vba]
Код
Function LastDig(S As String) As String
Dim Arr
Arr = Split(S, ",")
LastDig = Val(Arr(UBound(Arr) - 1))
End Function
[/vba]
Но можно объединить идеи:
[vba]
Код
Sub LastD()
For Each Cell In Selection
Cell.Offset(, 1) = LastDig(Cell.Value)
Next Cell
End Sub
[/vba]
 
Ответить
СообщениеПочти так же получилось, но передаю в качестве аргумента строку
[vba]
Код
Function LastDig(S As String) As String
Dim Arr
Arr = Split(S, ",")
LastDig = Val(Arr(UBound(Arr) - 1))
End Function
[/vba]
Но можно объединить идеи:
[vba]
Код
Sub LastD()
For Each Cell In Selection
Cell.Offset(, 1) = LastDig(Cell.Value)
Next Cell
End Sub
[/vba]

Автор - МВТ
Дата добавления - 06.04.2015 в 14:41
_Boroda_ Дата: Понедельник, 06.04.2015, 15:25 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16901
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Формула массива
Код
=ПОДСТАВИТЬ(ПРАВБ(A1;МИН(ЕСЛИ(ЕОШ(-ПСТР(A1;ДЛСТР(A1)-СТРОКА($1:$9);1));СТРОКА($1:$9))));",";)

обычная формула
Код
=ПОДСТАВИТЬ(ПСТР(A1;ПОИСК(A1;ПОДСТАВИТЬ(A1;",";A1;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))-1))+1;99);",";)

или
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;",";ПОВТОР(" ";999));999*(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))-1);999))
К сообщению приложен файл: 8282532_1.xlsx (9.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеФормула массива
Код
=ПОДСТАВИТЬ(ПРАВБ(A1;МИН(ЕСЛИ(ЕОШ(-ПСТР(A1;ДЛСТР(A1)-СТРОКА($1:$9);1));СТРОКА($1:$9))));",";)

обычная формула
Код
=ПОДСТАВИТЬ(ПСТР(A1;ПОИСК(A1;ПОДСТАВИТЬ(A1;",";A1;ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))-1))+1;99);",";)

или
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;",";ПОВТОР(" ";999));999*(ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;",";))-1);999))

Автор - _Boroda_
Дата добавления - 06.04.2015 в 15:25
Da_Shaaa Дата: Понедельник, 06.04.2015, 15:40 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Manyasha, МВТ, спасибо вам, друзья, но я боюсь что не сумею этого повторить в рабочем файле, с VBA вообще не знакома :(
 
Ответить
СообщениеManyasha, МВТ, спасибо вам, друзья, но я боюсь что не сумею этого повторить в рабочем файле, с VBA вообще не знакома :(

Автор - Da_Shaaa
Дата добавления - 06.04.2015 в 15:40
Da_Shaaa Дата: Понедельник, 06.04.2015, 15:51 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, вот это скил! :) спасибо, пытаюсь разобраться))
 
Ответить
Сообщение_Boroda_, вот это скил! :) спасибо, пытаюсь разобраться))

Автор - Da_Shaaa
Дата добавления - 06.04.2015 в 15:51
МВТ Дата: Понедельник, 06.04.2015, 15:59 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Da_Shaaa, все на самом деле просто: открываете свой файл, нажимаете Alt-F11, выбираете пункт меню Insert, в нем - Module. В появившийся модуль просто копируете код. Для того, чтобы разрешить использование макросов, в настройках экселя выбираете "Центр управления безопасностью" - "Параметры центра управления безопасностью" - "Параметры макросов" - "Включить макросы" (извините, если немного путано). Потом выделяете нужный интервал, нажимаете Alt-F8, выбираете LastDig1 и все :)
 
Ответить
СообщениеDa_Shaaa, все на самом деле просто: открываете свой файл, нажимаете Alt-F11, выбираете пункт меню Insert, в нем - Module. В появившийся модуль просто копируете код. Для того, чтобы разрешить использование макросов, в настройках экселя выбираете "Центр управления безопасностью" - "Параметры центра управления безопасностью" - "Параметры макросов" - "Включить макросы" (извините, если немного путано). Потом выделяете нужный интервал, нажимаете Alt-F8, выбираете LastDig1 и все :)

Автор - МВТ
Дата добавления - 06.04.2015 в 15:59
Da_Shaaa Дата: Понедельник, 06.04.2015, 16:08 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
МВТ, "и все" lol
щас попробую, спс!!
 
Ответить
СообщениеМВТ, "и все" lol
щас попробую, спс!!

Автор - Da_Shaaa
Дата добавления - 06.04.2015 в 16:08
  • Страница 1 из 1
  • 1
Поиск:

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