Dim cl As Integer, i As Integer, rw As Integer, clzc As Integer, clmon As Integer
MsgBox "Откройте нужные файлы" With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show For i = 1 To .SelectedItems.Count If InStr(1, .SelectedItems(i), ".xls", vbTextCompare) <> 0 Then Workbooks.Open Filename:=SelectedItems(i) On Error Resume Next cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column On Error Resume Next clzc = Cells.Find(What:="ЗЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next clmon = Cells.Find(What:="РЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1 If Err.Number = 0 Then Range(Cells(rw, cl), Cells(Cells(Rows.Count, 1).End(xlUp).Row, cl)).FormulaR1C1 = "=IF(OR(ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=0,ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=-1),"""",RC[" & clmon & "]/RC[" & clzc & "]-1)" ActiveWorkbook.Save ActiveWorkbook.Close End If Next i
End Sub
[/vba] Научились бы Вы сами чему-нибудь, Марк, а? А то два дня, блин, из Вас выдавливали, что Вам нужно, как раба из Чехова, а делов на 15 минут.
Просто это, как два пальца об асфальт.[vba]
Код
Sub Формулы()
Dim cl As Integer, i As Integer, rw As Integer, clzc As Integer, clmon As Integer
MsgBox "Откройте нужные файлы" With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show For i = 1 To .SelectedItems.Count If InStr(1, .SelectedItems(i), ".xls", vbTextCompare) <> 0 Then Workbooks.Open Filename:=SelectedItems(i) On Error Resume Next cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column On Error Resume Next clzc = Cells.Find(What:="ЗЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next clmon = Cells.Find(What:="РЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1 If Err.Number = 0 Then Range(Cells(rw, cl), Cells(Cells(Rows.Count, 1).End(xlUp).Row, cl)).FormulaR1C1 = "=IF(OR(ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=0,ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=-1),"""",RC[" & clmon & "]/RC[" & clzc & "]-1)" ActiveWorkbook.Save ActiveWorkbook.Close End If Next i
End Sub
[/vba] Научились бы Вы сами чему-нибудь, Марк, а? А то два дня, блин, из Вас выдавливали, что Вам нужно, как раба из Чехова, а делов на 15 минут.StoTisteg
Причём вангую, что через неделю Вы придёте к закономерному выводу, что открывать и закрывать 60 файлов неудобно и неплохо бы иметь их все в одной книге. Потом дойдёте до мысли, что сводки по препаратам удобнее, чем по аптекам... Ей-Богу, Вы доведёте форум до того, что при виде Вашего ника все будут разбегаться в панике и ужасе
Причём вангую, что через неделю Вы придёте к закономерному выводу, что открывать и закрывать 60 файлов неудобно и неплохо бы иметь их все в одной книге. Потом дойдёте до мысли, что сводки по препаратам удобнее, чем по аптекам... Ей-Богу, Вы доведёте форум до того, что при виде Вашего ника все будут разбегаться в панике и ужасе StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
StoTisteg, спасибо за помощь. Учиться программировать уже не тот возраст, да и начальных знаний в этом нет. Спасибо что помогаете таким как я. Иногда сразу изложить мысль бывает сложно, а потом доходит, что надо было так написать.
StoTisteg, спасибо за помощь. Учиться программировать уже не тот возраст, да и начальных знаний в этом нет. Спасибо что помогаете таким как я. Иногда сразу изложить мысль бывает сложно, а потом доходит, что надо было так написать.Mark1976
Сообщение отредактировал Mark1976 - Воскресенье, 17.04.2016, 18:42
Дошло. Я вместо окончательного варианта промежуточный нерабочий выложил [vba]
Код
Sub Формулы()
Dim cl As Integer, i As Integer, rw As Integer, clzc As Integer, clmon As Integer
MsgBox "Откройте нужные файлы" With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show For i = 1 To .SelectedItems.Count If InStr(1, .SelectedItems(i), ".xls", vbTextCompare) <> 0 Then Workbooks.Open Filename:=.SelectedItems(i) On Error Resume Next cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column On Error Resume Next clzc = Cells.Find(What:="ЗЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next clmon = Cells.Find(What:="ониторинг", LookAt:=xlPart).Column - cl On Error Resume Next rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1 If Err.Number = 0 Then Range(Cells(rw, cl), Cells(Cells(Rows.Count, 1).End(xlUp).Row, cl)).FormulaR1C1 = "=IF(OR(ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=0,ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=-1),"""",RC[" & clmon & "]/RC[" & clzc & "]-1)" ActiveWorkbook.Save ActiveWorkbook.Close End If Next i End With
End Sub
[/vba]
Дошло. Я вместо окончательного варианта промежуточный нерабочий выложил [vba]
Код
Sub Формулы()
Dim cl As Integer, i As Integer, rw As Integer, clzc As Integer, clmon As Integer
MsgBox "Откройте нужные файлы" With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show For i = 1 To .SelectedItems.Count If InStr(1, .SelectedItems(i), ".xls", vbTextCompare) <> 0 Then Workbooks.Open Filename:=.SelectedItems(i) On Error Resume Next cl = Cells.Find(What:="тклонение", LookAt:=xlPart).Column On Error Resume Next clzc = Cells.Find(What:="ЗЦ текущая", LookAt:=xlPart).Column - cl On Error Resume Next clmon = Cells.Find(What:="ониторинг", LookAt:=xlPart).Column - cl On Error Resume Next rw = Cells.Find(What:="тклонение", LookAt:=xlPart).Row + 1 If Err.Number = 0 Then Range(Cells(rw, cl), Cells(Cells(Rows.Count, 1).End(xlUp).Row, cl)).FormulaR1C1 = "=IF(OR(ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=0,ROUND(RC[" & clmon & "]/RC[" & clzc & "]-1,2)=-1),"""",RC[" & clmon & "]/RC[" & clzc & "]-1)" ActiveWorkbook.Save ActiveWorkbook.Close End If Next i End With