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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2009, 01:09   #1
Пашка_1977
 
Регистрация: 12.08.2009
Сообщений: 7
По умолчанию Задачка

Доброго времени суток всем
я впринципе с макросами и VB дело имел, но тут не совсем обычная задачка подвернулась может кто подскажет как это организовать.
Описываю.
файл состоит из двух листов 1 - учет прихода и расхода денег и 2 - курс на определенную дату.
Из данных вбивается только сумма доллары, дата и курс.
В столбец рубли надо чтобы проставлялась сумма по курсу даты. Соответственно надо взять дату со строки найти эту дату на листе курсов и курс стоящий напротив искомой даты умножить на колличество долларов в нашей строке.

как мне найти нужную дату на листе курсов?
Это нужен какойто цикл перебора ячеек и сравнивания их с исходной или есть какое то иное решение.
Помогите пожалуйста.
Вложения
Тип файла: rar Задача.rar (4.1 Кб, 14 просмотров)
Пашка_1977 вне форума Ответить с цитированием
Старый 12.08.2009, 01:54   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Попробуйте так: (можно вставить в событие Workbook_Open)
Код:
For Each Cell In Worksheets("Учет").Range("B3:B9")
d = Worksheets("Учет").Cells(Cell.Row, 1).Value
For Each cell2 In Worksheets("Курс").Range("A2:A4")
If (cell2.Value = d) Then kurs = Worksheets("Курс").Cells(cell2.Row, 2).Value

Next cell2

Cell.Value = kurs * Cells(Cell.Row, 3).Value


Next Cell
Здесь указаны интервалы B3:B9 и A2:A4, которые отражают границы, заполненные данными - на первом и втором листе соответственно. Их можно увеличить при появлении новых данных

Можно еще так (если много данных, при появлении нужной даты завершаем цикл):
Код:
For Each Cell In Worksheets("Учет").Range("B3:B9")
d = Worksheets("Учет").Cells(Cell.Row, 1).Value
For Each cell2 In Worksheets("Курс").Range("A2:A4")
If (cell2.Value = d) Then
kurs = Worksheets("Курс").Cells(cell2.Row, 2).Value
GoTo LAB
End If
Next cell2
LAB:
Cell.Value = kurs * Cells(Cell.Row, 3).Value


Next Cell

Последний раз редактировалось motorway; 12.08.2009 в 01:59.
motorway вне форума Ответить с цитированием
Старый 12.08.2009, 02:11   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Конечно, лучше сделать для события Workbook_SheetChange. Сейчас сделаю...

Вот так можно:

Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False

For Each Cell In Worksheets("Учет").Range("B3:B12")
d = Worksheets("Учет").Cells(Cell.Row, 1).Value
For Each cell2 In Worksheets("Курс").Range("A2:A14")
If (cell2.Value = d) Then
kurs = Worksheets("Курс").Cells(cell2.Row, 2).Value
GoTo LAB
End If
Next cell2
LAB:
Cell.Value = kurs * Worksheets("Учет").Cells(Cell.Row, 3).Value


Next Cell

Application.EnableEvents = True
End Sub

Последний раз редактировалось motorway; 12.08.2009 в 02:17.
motorway вне форума Ответить с цитированием
Старый 12.08.2009, 02:16   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Посмотри такой вариант
Вложения
Тип файла: rar Задача.rar (9.9 Кб, 13 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 12.08.2009, 02:22   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Это нужен какойто цикл перебора ячеек и сравнивания их с исходной или есть какое то иное решение.
есть иное решение...
Вложения
Тип файла: rar Книга139.rar (4.1 Кб, 16 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.08.2009, 02:23   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я сделал для Workbook_SheetChange, чтобы данные пересчитывались при изменении (если нужно что подправить).
motorway вне форума Ответить с цитированием
Старый 12.08.2009, 02:29   #7
Пашка_1977
 
Регистрация: 12.08.2009
Сообщений: 7
По умолчанию

Однако спасибо большое всем
буду углублять свои познания в эселе
не ожидал так быстро ответа да еще и несколько вариантов
еще раз спасибо
Пашка_1977 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка ! Viento Microsoft Office Excel 4 31.01.2009 12:19
Задачка в С++ EwwwA Помощь студентам 2 01.10.2008 04:57
Задачка Rusl92 Паскаль, Turbo Pascal, PascalABC.NET 7 25.09.2008 16:01
Задачка kupulau Общие вопросы C/C++ 7 27.01.2008 18:32