|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.02.2010, 10:08 | #11 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Вот он проблемный файл --> макрос Табличка
|
08.02.2010, 10:20 | #12 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
В макрос "TABLICHKA1" внес изменения, которые я советовал Вам сделать в посте №8. Ошибка исчезла. Посмотрите вложение.
Чем шире угол зрения, тем он тупее.
|
08.02.2010, 12:42 | #13 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Невероятно, но факт!
Sub TABLICHKA1()
Dim ws As Worksheet, x As Range, y As Range, i As Long, fst As String, nm As Integer Application.ScreenUpdating = False: Application.DisplayAlerts = False On Error Resume Next: Sheets("Èñòîðè÷åñêèå ïîêàçàòåëè").Delete: On Error GoTo 0 Worksheets.Add.Name = "Èñòîðè÷åñêèå ïîêàçàòåëè" [A1] = "--WELL": [B1] = "DD.MM.YYYY": [C1] = "Qoil,ì3/ñóò" [D1] = "Qwat,ì3/ñóò": [E1] = "Qliq,ì3/ñóò": [F1] = "WEFA": [G1] = "BHP" For Each ws In Sheets If ws.Name <> ActiveSheet.Name Then Set x = ws.[D:D].Find(what:="Qæ,ì3/ñóò", LookAt:=xlWhole) If Not x Is Nothing Then fst = x.Address Do i = Cells(Rows.Count, 1).End(xlUp).Row + 1: Cells(i, 1) = ws.Name Cells(i, 2) = DateValue(ws.Cells(x.Row, 1) & " 1, 2009") 'Year(Date)) Cells(i, 5) = Application.AverageIf(ws.Range(ws.C ells(x.Row, 6), ws.Cells(x.Row, 36)), "<>0") If Application.IsErr(Cells(i, 5)) Then Range(Cells(i, 3), Cells(i, 7)) = 0 If ws.[AC5] <> "" Then Cells(i, 7) = ws.[AC5] If Cells(i, 6).Value <> "0" Then nm = Day(DateSerial(Year(Cells(i, 2)), Month(Cells(i, 2)) + 1, 1) - 1) Cells(i, 6) = Application.CountA(ws.Range(ws.Cell s(x.Row, 6), ws.Cells(x.Row, 36))) / nm End If If Cells(i, 5) <> 0 And Val(ws.[AG5]) <> 0 Then _ Cells(i, 3) = Application.AverageIf(ws.Range(ws.C ells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)), "<>0") / ws.[AG5] _ Else Cells(i, 3) = 0 Set x = ws.[D:D].FindNext(x) Loop While fst <> x.Address End If: End If: Next: Columns("A:G").AutoFit End Sub Но у меня по-прежнему затыкается на листе 1033 и по-прежнему выдаёт ошибку в той же строке... |
08.02.2010, 16:37 | #14 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Sub TABLICHKA1()
Dim ws As Worksheet, x As Range, y As Range, i As Long, fst As String, nm As Integer Application.ScreenUpdating = False: Application.DisplayAlerts = False On Error Resume Next: Sheets("Èñòîðè÷åñêèå ïîêàçàòåëè").Delete: On Error GoTo 0 Worksheets.Add.Name = "Èñòîðè÷åñêèå ïîêàçàòåëè" [A1] = "--WELL": [B1] = "DD.MM.YYYY": [C1] = "Qoil,ì3/ñóò" [D1] = "Qwat,ì3/ñóò": [E1] = "Qliq,ì3/ñóò": [F1] = "WEFA": [G1] = "BHP" For Each ws In Sheets If ws.Name <> ActiveSheet.Name Then Set x = ws.[D:D].Find(what:="Qæ,ì3/ñóò", LookAt:=xlWhole) If Not x Is Nothing Then fst = x.Address Do i = Cells(Rows.Count, 1).End(xlUp).Row + 1: Cells(i, 1) = ws.Name Cells(i, 2) = DateValue(ws.Cells(x.Row, 1) & " 1, 2009") 'Year(Date)) Cells(i, 5) = Application.AverageIf(ws.Range(ws.C ells(x.Row, 6), ws.Cells(x.Row, 36)), "<>0") If Application.IsErr(Cells(i, 5)) Then Range(Cells(i, 3), Cells(i, 7)) = 0 If ws.[AC5] <> "" Then Cells(i, 7) = ws.[AC5] If Cells(i, 6).Value <> "0" Then nm = Day(DateSerial(Year(Cells(i, 2)), Month(Cells(i, 2)) + 1, 1) - 1) Cells(i, 6) = Application.CountA(ws.Range(ws.Cell s(x.Row, 6), ws.Cells(x.Row, 36))) / nm End If If Cells(i, 5) <> "0" And ws.[AG5] <> "" Then If Application.IsErr(Application.Avera geIf(ws.Range(ws.Cells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)), "<>0")) Then Cells(i, 3).Value = 0 Else: Cells(i, 3).Value = Application.AverageIf(ws.Range(ws.C ells(x.Row + 1, 6), ws.Cells(x.Row + 1, 36)), "<>0") / ws.[AG5] End If End If If Cells(i, 3) <> 0 And Cells(i, 5) <> 0 And Cells(i, 3) <> "" And Cells(i, 5) <> "" Then _ Cells(i, 4).Value = Cells(i, 5).Value - Cells(i, 3).Value If Cells(i, 3) = 0 Or Cells(i, 3) = "" And Cells(i, 4) = 0 Then Cells(i, 4) = Cells(i, 5): Cells(i, 5) = 0: Cells(i, 3) = 0 End If Set x = ws.[D:D].FindNext(x) Loop While fst <> x.Address End If: End If: Next: Columns("A:G").AutoFit Application.ScreenUpdating = True Application.Calculation = xlAutomatic End Sub Вот так заработало + я ещё кое что добавил. Подскажите пожалуйста как мне можно сместить дату на 1 месяц вперёд? |
09.02.2010, 04:33 | #15 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Чем шире угол зрения, тем он тупее.
|
|
09.02.2010, 05:37 | #16 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Во втором столбце таблички у меня выгружает:
01.01.2009 01.02.2009 01.03.2009 01.04.2009 01.05.2009 01.06.2009 01.07.2009 01.08.2009 01.09.2009 01.10.2009 01.11.2009 01.12.2009 а хочется так: 01.02.2009 01.03.2009 01.04.2009 01.05.2009 01.06.2009 01.07.2009 01.08.2009 01.09.2009 01.10.2009 01.11.2009 01.12.2009 01.01.2010 чтобы расчёты за месяц стояли напротив первого числа следующего месяца. Вообще я знаю как исправить это в Excelе ручками, а как бы сделать это автоматически?... |
09.02.2010, 08:15 | #17 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Если речь идет о данных столбца "B" в сформированном макросом листе "Исторические показатели", то в самом конце кода макроса "TABLICHKA1" добавьте следующий код:
Код:
Чем шире угол зрения, тем он тупее.
|
09.02.2010, 09:27 | #18 |
Пользователь
Регистрация: 20.01.2010
Сообщений: 53
|
Спасибо ещё раз!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Структура | Telec | Помощь студентам | 2 | 20.01.2010 12:46 |
C++. Структура. | bpystep | Помощь студентам | 12 | 24.11.2009 00:28 |
структура | hungry | Общие вопросы C/C++ | 11 | 25.06.2009 20:31 |
Структура | SL1CK | Общие вопросы C/C++ | 8 | 08.06.2009 21:31 |
Запуск макроса с параметрами из другого макроса | Saladin | Microsoft Office Excel | 2 | 19.01.2009 09:43 |