Привет, приятель, этот http://android-task-manager.googlecode.com/svn/trunk/ , а также этот http://www.anddev.org/advanced- tutorials-f21 / android-taskmanager-simple-t315.html вы получите представление о том, как создать диспетчер задач в android.
Im, используя этот код / формулу. хорошо работает для моих потребностей, только я хотел бы знать, как я могу улучшить формулу клетки, поэтому я могу использовать 3+ таблицы в качестве ссылки. в настоящее время im просто вставляет кучу операторов iferror в iferror
=IFERROR(INDEX(Table1, ROW([@Date])-ROW(Table3[#Headers]),COLUMN(A:A)),IFERROR( INDEX(Table2, ROW([@Date])-ROW(Table3[#Headers])-ROWS(Table1),COLUMN(A:A)), IFERROR(INDEX(Table4, ROW([@Date])-ROW(Table3[#Headers])-ROWS(Table2)-ROWS(Table1),COLUMN(A:A)),INDEX(Table5, ROW([@Date])-ROW(Table3[#Headers])-ROWS(Table2)-ROWS(Table1)-ROWS(Table4),COLUMN(A:A)))))
Im также использует
Небольшая модификация кода Jeeped.
Если вы используете подобный подход, но с несколькими таблицами (например, более 10), то будет довольно громоздко пытаться вручную добавить каждое имя каждой таблицы. Это также проблема, если вы меняете имена таблиц, поскольку имена в VBA жестко связаны. Чтобы избежать дополнительной работы, рассмотрите следующее:
Итак, предположим следующее:
Затем Subbook Workbook_SheetChange в приведенном выше примере может выглядеть следующим образом:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim tbl As ListObject
For Each tbl In ActiveSheet.ListObjects
If Not Intersect(Target, tbl.Range.Offset(1, 0)) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Call update_Table
End If
Next tbl
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
Изменить. Вторая процедура будет выглядеть так:
Private Sub update_Table()
Dim iTBL3rws As Long, rng As Range, rngOLDBDY As Range
Dim tbl As ListObject
Dim sht As Worksheet
iTBL3rws = 0
' consider all tables, excluding master table
For Each sht In ThisWorkbook.Worksheets
For Each tbl In sht.ListObjects
If tbl.Name <> "Table3" Then
iTBL3rws = iTBL3rws + tbl.DataBodyRange.Rows.Count
End If
Next tbl
Next sht
iTBL3rws = iTBL3rws + Sheet3.ListObjects("Table3").DataBodyRange.Cells(1, 1).Row - Sheet3.ListObjects("Table3").Range.Cells(1, 1).Row
With Sheet3.ListObjects("Table3")
Set rngOLDBDY = .DataBodyRange
.Resize .Range.Cells(1, 1).Resize(iTBL3rws, .DataBodyRange.Columns.Count)
If rngOLDBDY.Rows.Count > .DataBodyRange.Rows.Count Then
For Each rng In rngOLDBDY
If Intersect(rng, .DataBodyRange) Is Nothing Then
rng.Clear
End If
Next rng
End If
End With
End Sub
Эта процедура отличается от предыдущей, устраняя предварительно запрограммированные случаи. Когда на активном листе внесено изменение, любая таблица в этом листе, который должен быть изменен, вызовет процедуру update_Table.
lori_m сделал действительно хороший вклад, который я построил с помощью таблиц Microsoft Excel и структурированных ссылок.
Сначала создайте столбец в вашей выходной таблице RowID, который содержит номер строки в таблице, а затем используйте это для заполнения значений данных.
=IF( INDIRECT("Table3[RowId]")<=ROWS(Table1)
,INDEX(Table1[column1],INDIRECT("Table3[RowId]"))
,INDEX(Table2[Column1],INDIRECT("Table3[RowId]")-ROWS(Table1)))
Существует подробное объяснение того, как это работает в моем блоге , поскольку оно слишком долго для включения здесь.
Вы можете активировать Office Clipboard (стрелка внизу справа от раздела буфера обмена на вкладке «Главная лента»). Скопируйте оба диапазона, затем используйте команду «Вставить все», как показано ниже.
Вам все равно нужно сначала заполнить имя листа в дополнительном столбце, хотя это можно сделать, дважды щелкнув дескриптор заполнения.
[/g1]
Обновить
Чтобы получить те же результаты с формулами, попробуйте заполнить это для имени листа:
=IF(ROW()<=COUNTA(Sheet1!A:A),"Sheet1",IF(ROW()<COUNTA(Sheet1:Sheet2!A:A),"Sheet2",""))
, а затем заполните и перейдите по этой формуле для значения в таблицах:
=IF(ROW()<=COUNTA(Sheet1!A:A),Sheet1!A2,IF(ROW()<COUNTA(Sheet1:Sheet2!A:A),INDEX(Sheet2!A:A,ROW()-COUNTA(Sheet1!A:A)+1),""))
Paste Link
для привязки комбинированной таблицы к исходной таблице. Это будет автоматически обновляться с изменениями в исходной таблице, если количество элементов в списках не изменяется
– lori_m
29 March 2012 в 16:20
=IF(ROW()<(COUNTA(Sheet1!A:A)+1),INDEX(Sheet1!A:A,ROW()),IF(ROW()<COUNTA(Sheet1:Sheet2!A:A),INDEX(Sheet2!A:A,ROW()-COUNTA(Sheet1!A:A)+1),"")
– Steven Stangle
11 January 2016 в 21:13