Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2012, 11:55   #1
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию Возможно ли обработать данные из примечания?

В примечаниях стоят даты в таком виде:

21.12.2012
22.12.2012
25.12.2012

Нужно, чтобы последнее число отнимало предпоследнее и выводилась разница - 2 в отдельные ячеки. Возможно ли такое реализовать средствами VBA?

Если нет, то куда посоветуете заносить даты напротив ячеек с данными, если их очень много, чтобы не захламлять лист?
Тандер вне форума Ответить с цитированием
Старый 29.10.2012, 13:10   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Возможно.
Но что конкретно нужно - непонятно.
Давайте файл.

Массивная UDF - вводить сразу в 2 ячейки.
Что конкретно было нужно - не понял, вывожу как объяснили

Код:
Function tander(r As Range)
    Dim arr
    Dim a(1 To 1, 1 To 2)
    On Error Resume Next
    arr = Split(r.Comment.Text, vbLf)
    a(1, 1) = CDate(arr(UBound(arr))) - CDate(arr(UBound(arr) - 1)) 'выводилась разница
    a(1, 2) = a(1, 1) - 2 'выводилась разница - 2
    tander = a
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.10.2012 в 13:23.
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2012, 13:49   #3
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Спасибо большое за ваш ответ!

Пока составлял пример понял, что немного не так выразился. В примере дата стоит в ячейке F2. В примечаниях B3:B7 стоит другая дата. В ячейки D3:D7 выводится разница между датой в ячейке F2 и последней датой в примечании. Можно такое реализовать?
Вложения
Тип файла: rar 1.rar (4.5 Кб, 11 просмотров)
Тандер вне форума Ответить с цитированием
Старый 29.10.2012, 14:06   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а может, просто дополнительную колонку ввести и держать в ней эти самые даты, что в примечании. а чтобы эти даты не раздражали зрение - колонку можно сделать очень узкой или вовсе скрыть.
а) так (в узкой колонке) эти даты удобнее редактировать, чем в примечаниях
б) Ваша задача тогда решается элементарно, стандартными средствами, а не (как бы это по-мягче выразиться) через примечания...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2012, 14:15   #5
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Игорь, спасибо за совет. Но представьте, что таких колонок нужно 5 тысяч под каждую отдельную ячейку. Это очень и очень не удобно. Может быть есть какой-то другой способ, типа выпадающего списка, либо мне не известный. Но все же очень был бы признателен, если бы вы подсказали, как это реализовать средствами VBA, если это возможно.
Тандер вне форума Ответить с цитированием
Старый 29.10.2012, 14:36   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В стандартный модуль

Код:
Function tander(r As Range, dt As Date)
    Dim arr, i&
    tander = ""
    On Error Resume Next
    arr = Split(r.Comment.Text, vbLf)
    For i = UBound(arr) To 0 Step -1
        If IsDate(arr(i)) Then
            tander = dt - CDate(arr(i))
            Exit For
        End If
    Next
End Function
На листе в ячейке

Код:
=tander(B3,$F$2)
Если бы все комменты писались так, как в ячейках 2, 3, 4, 5 - код мог быть проще.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.10.2012 в 14:39.
Hugo121 вне форума Ответить с цитированием
Старый 29.10.2012, 15:06   #7
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Работает! Спасибо огромное!!
Тандер вне форума Ответить с цитированием
Старый 29.10.2012, 15:48   #8
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

Маленькое уточнение, как сделать, чтобы автоматически обновляся лист при вставке новой даты в примечание. Или поставить на кнопку (я знаю как ставить на кнопку, не знаю как выполнить функцию, так как она макросом не является).
Тандер вне форума Ответить с цитированием
Старый 29.10.2012, 17:01   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

F9 - пересчет книги.

кстати, это Вы продолжаете "выгребать" последствия своего нестандартного решения.

насколько я понял даты в примечания Вы ручками пишете, вы не получаете столбец с этими данными уже в таком виде?
тогда что мешает написать их в ячейку. и след. вопрос, зачем они все нужны, если значение имеет только последняя из них?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.10.2012, 17:06   #10
Тандер
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 58
По умолчанию

А макросом можно обновление сделать? Или просто поставить на кнопку F9?

Даты вставляются другим макросом, поэтому такая ситуация.

Значение имеет последняя из дат, но спицифика работы макроса такова, что вставляются поэтапно каждая из дат. Сегодгя одна, завтра другая (если есть) и т.д.
Тандер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскаль-обработать и отсортировать данные об участниках соревнований subzero95 Паскаль, Turbo Pascal, PascalABC.NET 4 13.04.2012 00:22
Возможно ли связать данные двух листов? daria m Microsoft Office Excel 1 18.01.2012 04:25
Считать и обработать данные из файла EXCEL CJ ALEX R Помощь студентам 4 14.08.2011 13:04
Как обработать данные с форм в php Hichigo PHP 3 25.07.2010 03:39
Возможно ли востановить данные в Excel? vovikbvovikb Помощь студентам 0 08.08.2009 09:53