|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Име на шийт във формула
|
|
Автор |
npubem (:-) |
Публикувано | 16.04.14 14:44 |
|
Как мога да извлека име на шийта (примерно Sheet1) в клетка от екселска
таблица и как мога да използвам клетка от таблица като име на шийт във
формула? Примерно вместо Sheet1 във формулата:
=Sheet1!A5
да използвам клетка, съдържаща името.
Предварително благодаря!
Съкращавайте фразите до размера на мисъл. М.Вайсберг
| |
|
Уточни точно какво искаш да постигнеш, че нещо не ми се връзва...
Доколкото разбрах:
1.Имаш един лист /например лист НАСТРОЙКИ/ , в който са изредени имена на листи.
2.Нейде из този лист имаш формула, дето взема нещоси от някой от изредените листа
3.И искаш тази формула да се променя? Демек по някое време /когато ти е кеф/ да казваш - НЕ ОТ ТОЯ АМИ ОТ ОНЯ ЛИСТ?
Дай инфо до тука и после ще продължим с вариантите...
Можеш да погледнеш функцията
=CELL("filename")
| |
Тема
|
Re: Име на шийт във формула
[re: npubem]
|
|
Автор |
Бypaн (ентусиаст) |
Публикувано | 17.04.14 09:59 |
|
=INDIRECT("Sheet1!$A$5")
или
=INDIRECT(ADDRESS(5,1,1,TRUE,"Sheet1"))
Името на листа в последната формула естествено може да се взима от клетка, в която си го написал, защото не се сещам за формула, която да ти извлича името на лист. Зависи какво искаш да направиш, но ако искаш да може да си променяш името на листа, без да ти се налага да си променяш името, което си сложил в някоя клетка и от там го извличаш за горната формула, може да дефинираш име на област и с него да работиш.
Другия вариант е да си напишеш UDF, но пак зависи какво точно целиш.
Редактирано от Бypaн на 17.04.14 10:00.
| |
Тема
|
Re: Име на шийт във формула
[re: BatiGogo]
|
|
Автор |
npubem (:-) |
Публикувано | 18.04.14 23:35 |
|
Като начало искам да взема имената на листите в един файл
и да ги сложа като списък в data-validtion на една клетка, за
да мога да ги избирам.
После според избора да взема данни от съответния лист според
стойността на тази клетка.
Съкращавайте фразите до размера на мисъл. М.Вайсберг
| |
Тема
|
Re: Име на шийт във формула
[re: Бypaн]
|
|
Автор |
npubem (:-) |
Публикувано | 18.04.14 23:42 |
|
Благодаря! Това върши работа за втората част от задачата ми.
Ще трябва списъка с шийтове да го направя и актуализирам ръчно.
Съкращавайте фразите до размера на мисъл. М.Вайсберг
| |
|
Аз бих направил макрос за записване на имената на листите в единия от листата... Например;
Sub Proba1()
Dim List1 As String, Broi As Integer
List1 = "DANNI" 'листа в който ще се записва
Broi = 1
For Each Element In ThisWorkbook.Sheets
If Element.Name <> List1 Then 'без текущия лист
Broi = Broi + 1
Sheets(List1).Cells(Broi, 1).Value = Element.Name
End If
Next
'може да потрябва по-нататъка - бройката на листите
Sheets(List1).Cells(1, 1).Value = Broi - 1
End Sub
И после ако искам в клетка А1 на всеки лист да "драсна" нещо - примерен код:
Sub proba2()
Dim I As Integer, Broi As Integer, List1 As String, List2 As String
List1 = "DANNI"
Broi = Sheets(List1).Cells(1, 1).Value
For I = 2 To Broi + 1
List2 = Sheets(List1).Cells(I, 1).Value
Sheets(List2).Cells(1, 1).Value = "Името на този лист е:" + List2
Next
End Sub
Ама ако не можеш писа макроси, хич не се сещам...Сигурно ще трябват много IF-ове да се нацвъкат един в друг...
| |
Тема
|
Re: Име на шийт във формула
[re: BatiGogo]
|
|
Автор |
npubem (:-) |
Публикувано | 19.04.14 13:47 |
|
Благодаря и на теб!
И това ще ми бъде от полза. Справям се с макросите.
Намерих и още нещо по въпроса - готови макроси, където е добавена
функция "sheetname"
Съкращавайте фразите до размера на мисъл. М.Вайсберг
| |
|
Извън Темата !
Е , най-после някаква тема/раздвижване във Форума
Ама пааак същите хора, къде изчезнаха хората ! В други Форуми
или във Facebook ли !
| |
|
Вероятно хората се опитват да се справят сами или с Гугъл,
без да попитат знаещите, а може би за да не ги помислят за
глупави?
Тук винаги съм получавал бързи и професионални отговори.
Пък други форуми съвсем се затриха...
Съкращавайте фразите до размера на мисъл. М.Вайсберг
| |
|
Ако правилно съм разбрал за Data Validation ! Моя куца проба :)
В отговор на:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("B1").Address Then
Dim ValidationList() As Variant, i As Integer
Dim WSht As Worksheet
i = 0
ReDim ValidationList(ActiveWorkbook.Sheets.Count - 1)
For Each WSht In ActiveWorkbook.Sheets
ValidationList(i) = WSht.Name
i = i + 1
Next WSht
With Range("B1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlEqual, Formula1:=Join(ValidationList, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub
Макроса трябва да се сложи в Sheet-a в който е клетката дето трябва да се случва случката. Написал съм, че е B1 ти ще я смениш .... Според мен може да се направи да следи всчики клетки от Колона и да сменя Data Validation в повече клетки едновременно , Range("В1:B20") и пр.
Идеята е като кликнеш на клетката, обновява Листа и реално се избира от Актуален Лист. Дано да върши работа :)
P.S.
Верно от Интернет си дръпнах част от информацията.Редактирано от Minavasht_new-208743 на 23.04.14 21:06.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|