Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Анализ значения / 21 сообщений из 21, страница 1 из 1
12.08.2010, 13:00
    #36788122
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Добрый день.
Сразу скажу, только две недели изучаю VBA, как и программирование в принципе, дабы не возникало вопросов нубства)))

Так вот, задача такая, существует диапазон ячеек ("A1:A34"), значения текстового формата и структура у них одинаковая, а именно:

Бла Бла1 Бла2(месяц) Бла3.xlsx
Вся структура одинаковая, за исключением Бла2, оно меняется, а точнее это месяцы формата (январь-февраль, февраль-март и т.д.)
Что-то типа Month(1 to 12)
Month(1) = "январь-февраль"
Month(2) = "февраль-март"
...
Month(12) = "декабрь-январь"

Необходимо путем анализа выявить максимальный месяц Month(i)
Не знаю в какую сторону копать(((
Некоторых месяцев может и не быть, но нужен максимально имеющийся, так же могут быть значения другого формата, их необходимо игнорировать. Как искать по диапазону и по значением?
Скажите хотя бы в какую сторону копать.
Заранее спасибо.
...
Рейтинг: 0 / 0
12.08.2010, 13:04
    #36788132
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Supper6Как искать по диапазону и по значением?

Перебор ячеек (пример для печати):
Код: plaintext
1.
2.
3.
4.
Dim Cll As Range
For Each Cll In Range("A1:A3")
  Cll.Select
  Selection.PrintOut Copies:= 1 , Collate:=True
Next
...
Рейтинг: 0 / 0
12.08.2010, 13:05
    #36788137
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
По остальному - напишите еще раз и внятно, а то каша какая-то, имя файла, индексы, массив, я так и не понял, что в ячейках, приложите пример что-ли, если словами неописуемо...
...
Рейтинг: 0 / 0
12.08.2010, 13:30
    #36788240
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,

в столбце идет список значений, который были импортированы с названий файлов, путем команды dir, а именно:

Текст январь-февраль Текст.xlsx
Текст февраль-март Текст.xlsx

необходимо вычислить максимальный месяц в значении, в данном случае февраль-март

может быть такой вариант:


Текст февраль-март Текст.xlsx
Текст март-апрель Текст.xlsx

Если не понятно, могу файл-пример вложить.
...
Рейтинг: 0 / 0
12.08.2010, 13:48
    #36788307
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Понятно, ща напищу извращенческую функцию
...
Рейтинг: 0 / 0
12.08.2010, 13:56
    #36788335
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function MaxMonth(Str As String) As Integer

Dim k() As String, i As Integer, m As Integer
MaxMonth =  0 
k = Split(Replace(Str, "-", " "))
For i =  0  To UBound(k)
  If IsDate("1-" + k(i) + "-1900") Then
    m = Month("1-" + k(i) + "-1900")
    If m > MaxMonth Then MaxMonth = m
  End If
Next

End Function

Код: plaintext
1.
2.
3.
4.
5.
?MaxMonth("Текст январь-февраль Текст.xlsx")
  2  
?MaxMonth("Текст март-апрель Текст.xlsx")
  4  
?MaxMonth("ерунда.xlsx")
  0  
...
Рейтинг: 0 / 0
12.08.2010, 13:57
    #36788336
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Написал, а потом подумал.
Работать будет только в русских виндах.
Если не пойдет - нужно делать словарь месяцев.
...
Рейтинг: 0 / 0
12.08.2010, 14:24
    #36788413
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,
Спасибо огромное, то что надо, море благодарностей. Хоть и не смог прочитать код, но работает.
По поводу русской винды, ничего страшного, мне хотя бы временное рабочее решение, позже буду постепенно осваивать VBA, в жизни пригодится.
Еще раз спасибо.
...
Рейтинг: 0 / 0
12.08.2010, 14:28
    #36788425
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Supper6Хоть и не смог прочитать код, но работает.
Лучше все-таки потратить время и прочитать код. Пригодится.
...
Рейтинг: 0 / 0
12.08.2010, 14:30
    #36788429
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,

сейчас этим и занимаюсь))
возникла проблемка, при ноябрь-декабрь и декабрь-январь выдает одно значение, равное 12.
...
Рейтинг: 0 / 0
12.08.2010, 14:34
    #36788448
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Я ориентировался на это ТЗ, так как в первом сообщении все очень заморочено.
Supper6необходимо вычислить максимальный месяц в значении

А почему январь старше декабря (требуется формальный ответ, алгоритмический)?
А если будет написано "февраль-январь" - все равно январь больше, чем февраль?

Может ТЗ переформулировать как - "узнать номер второго встретившегося в тексте месяца" или "месяца после минуса". Подумайте над ТЗ
...
Рейтинг: 0 / 0
12.08.2010, 14:56
    #36788522
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,

Извините, не правильно изъяснил.
не в значении, а в значениях.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mas( 1 ) = "январь-февраль"
mas( 2 ) = "февраль-март"
mas( 3 ) = "март-апрель"
mas( 4 ) = "апрель-май"
mas( 5 ) = "май-июнь"
mas( 6 ) = "июнь-июль"
mas( 7 ) = "июль-август"
mas( 8 ) = "август-сентябрь"
mas( 9 ) = "сентябрь-октябрь"
mas( 10 ) = "октябрь-ноябрь"
mas( 11 ) = "ноябрь-декабрь"
mas( 12 ) = "декабрь-январь"
вот список вариантов месяцев, других вариантов быть не может.
Проект таков, что каждый месяц в папку с файлами Эксель будут добавляться файлы с разницей "текущий месяц-следующий". Этот список я выгружаю в Эксель скриптом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub ListFiles()
Dim r As String, f As String, Directory As String

'Directory = "E:\Test\"
r =  1 

f = Dir(Directory,  7 )
Do While f <> ""
r = r +  1 
Cells(r,  5 ) = f

f = Dir
Loop
End Sub
С большой вероятностью могут возникнуть форс-мажорные обстоятельства, так что оперироваться необходимо названием файла, а не текущим месяцем или датой создания файла.
В этом списке файлов необходимо найти файл с самым последним месяцем.
Например, вот список файлов:
"Текст февраль-март текст.xlsx"
"Текст март-апрель текст.xlsx"
"Текст апрель-май текст.xlsx"

В данном случае файл с последним месяцем "Текст апрель-май текст.xlsx"
Так же первых месяцев может не быть.
...
Рейтинг: 0 / 0
12.08.2010, 14:58
    #36788532
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Очень много слов.

Можно ли сформулировать ТЗ так:
"Найти номер последнего встретившегося в строке названия месяца"
?
...
Рейтинг: 0 / 0
12.08.2010, 14:59
    #36788534
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.ProОчень много слов.

Можно ли сформулировать ТЗ так:
"Найти номер последнего встретившегося в строке названия месяца"
?
Разумеется, это пока речь идет об одной строке
...
Рейтинг: 0 / 0
12.08.2010, 15:05
    #36788561
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.ProShocker.ProОчень много слов.

Можно ли сформулировать ТЗ так:
"Найти номер последнего встретившегося в строке названия месяца"
?
Разумеется, это пока речь идет об одной строке
Ну и вторым этапом - найти ячейку в диапазоне с максимальным номером вышеуказанного месяца.
...
Рейтинг: 0 / 0
17.08.2010, 16:28
    #36795981
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Извиняюсь за такую длинную паузу.
В общем необходимо определить номер месяца до знака "-" в "Текст январь-февраль Текст.xlsx"
спасибо.
...
Рейтинг: 0 / 0
17.08.2010, 18:38
    #36796356
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Supper6В общем необходимо определить номер месяца до знака "-" в "Текст январь-февраль Текст.xlsx"
спасибо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Function FindMonth(Str As String) As Integer

Dim i As Integer, j As Integer, MntName As String
FindMonth =  0 
i = InStr( 1 , Str, "-")
If i =  0  Then Exit Function
j = InStrRev(Str, " ", i)
MntName = Mid$(Str, j +  1 , i - j -  1 )
If Not IsDate("1-" + MntName + "-1900") Then Exit Function
FindMonth = Month("1-" + MntName + "-1900")

End Function
...
Рейтинг: 0 / 0
17.08.2010, 18:48
    #36796383
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Supper6,
так задание Ваше:
В общем необходимо определить номер месяца до знака "-" в "Текст январь-февраль Текст.xlsx"
спасибо
Или всё же
В общем необходимо определить номер месяца до знака "-" в "январь-февраль Текст.xlsx"
спасибо.
и Вы начали только изучать ВБА и код от сегодня, 18:38 Вас устраивает, то респект Вам!
Так из заданий в этом моём посте первое или второе какое точней?
...
Рейтинг: 0 / 0
17.08.2010, 18:51
    #36796390
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Ципихович Эндрю,

мой код адекватно обрабатывает оба случая, так что это неважно.
...
Рейтинг: 0 / 0
17.08.2010, 18:55
    #36796398
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,
я не в коем случае не против вашего кода, если человек только начал изучать ВБА и его понял я перед Вами обоими преклоняюсь
...
Рейтинг: 0 / 0
18.08.2010, 10:06
    #36797069
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Анализ значения
Shocker.Pro,

спасибо огромное, то что надо. Прошлый ваш код мне так же пригодился.


Ципихович Эндрю
именно "Текст январь-февраль Текст.xlsx"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Анализ значения / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]