Добрый день. Есть excel файл. В нем есть листы (например их 10 штук). При этом таблица с данными есть на первом листе и на пятом. Таблицы по структуре идентичные, только циферки разных в ячейках. Требуется интерполировать данные между листами 1 и 5. Например в ячейке А1 на листе 1 записано: 10. А в этой же ячейке на листе 5 - 110. Соответственно нужно на листах 2, 3 и 4 написать это: 35, 60 и 85. Как это сделать?
Добрый день. Есть excel файл. В нем есть листы (например их 10 штук). При этом таблица с данными есть на первом листе и на пятом. Таблицы по структуре идентичные, только циферки разных в ячейках. Требуется интерполировать данные между листами 1 и 5. Например в ячейке А1 на листе 1 записано: 10. А в этой же ячейке на листе 5 - 110. Соответственно нужно на листах 2, 3 и 4 написать это: 35, 60 и 85. Как это сделать?Dron_S
Function НомерЛиста() Dim N As String N = ActiveSheet.Name For i = 1 To Sheets.Count If Sheets(i).Name = N Then НомерЛиста = i Exit Function End If Next i End Function
[/vba]
Примерно так
Код
=Лист1!A1+(Лист5!A1-Лист1!A1)/4*(НомерЛиста()-1)
, где НомерЛиста - UDF [vba]
Код
Function НомерЛиста() Dim N As String N = ActiveSheet.Name For i = 1 To Sheets.Count If Sheets(i).Name = N Then НомерЛиста = i Exit Function End If Next i End Function
Можете выложить пример сюда в виде excel файла, чтобы посмотреть что и как? [moder]Не нужно цитировать весь пост. Прочитайте Правила форума. Касательно примера - п.3 Правил.
Можете выложить пример сюда в виде excel файла, чтобы посмотреть что и как? [moder]Не нужно цитировать весь пост. Прочитайте Правила форума. Касательно примера - п.3 Правил.Dron_S
Сообщение отредактировал _Boroda_ - Вторник, 25.08.2015, 14:47
Представим, что в какой-то момент времени у нас активен лист 2, тогда на ВСЕХ листах функция НомерЛиста даст нам двойку. А должно быть - на листе 2 = 2, на листе 3 = 3, ... Более того, если активен лист 444 в другой книге, то функция даст значение 444
Представим, что в какой-то момент времени у нас активен лист 2, тогда на ВСЕХ листах функция НомерЛиста даст нам двойку. А должно быть - на листе 2 = 2, на листе 3 = 3, ... Более того, если активен лист 444 в другой книге, то функция даст значение 444_Boroda_
Марина, Вы абсолютно правы, так же, как и увожаемый _Boroda_. Думаю, более правильнее будет сделать примерно так: [vba]
Код
Function GetSheetNumber() Dim Sh As String Sh = Application.ThisCell.Address(1, 1, xlA1, 1) Sh = Right(Sh, Len(Sh) - InStr(Sh, "]")) Sh = Left(Sh, InStr(Sh, "!") - 1) GetSheetNumber = Sheets(Sh).Index End Function
[/vba]
Марина, Вы абсолютно правы, так же, как и увожаемый _Boroda_. Думаю, более правильнее будет сделать примерно так: [vba]
Код
Function GetSheetNumber() Dim Sh As String Sh = Application.ThisCell.Address(1, 1, xlA1, 1) Sh = Right(Sh, Len(Sh) - InStr(Sh, "]")) Sh = Left(Sh, InStr(Sh, "!") - 1) GetSheetNumber = Sheets(Sh).Index End Function