У меня есть таблица в MySQL, как это:
+-------+--------+-------------+
| child | parent | data |
+-------+--------+-------------+
| 1 | 0 | house |
| 2 | 0 | car |
| 3 | 1 | door |
| 4 | 2 | door |
| 5 | 2 | windscreen |
| 11 | 5 | wiper |
+-------+--------+-------------+
Я подключился к mysql из Excel 2007 в соответствии с этим руководством, за исключением того, что я создал днс в системе днс, а не в юзере днс, которая работала для меня.
У меня немного знаний о формулах, и я не мог понять, как получить эти табличные данные:
house | door
house | wall
car | door
car | windscreen | wiper
Редактировать 1
Часть с mysql здесь не имеет значения. Эта таблица mysql вполне может быть таблицей Excel.
Редактировать 2
Теперь я понимаю, что даже не нужно было говорить, что здесь есть таблица mysql, а просто таблица excel. Но это может кого-то вдохновить / помочь.
Редактировать 3
После некоторой документации мне удалось решить самые важные аспекты моей проблемы
Диапазон в листе db:
child parent data
1 0 car
2 0 house
3 1 door
4 2 door
5 1 window
6 2 window
7 1 windscreen
8 7 wiper
9 4 color
10 2 color
У меня есть имя БД, которое относится к
=db!$A$2:OFFSET(db!$C$2,COUNTA(db!$C:$C)-2,0)
имя ребенка
=db!$A$2:OFFSET(db!$A$2,COUNTA(db!$A:$A)-2,0)
На другом листе с именем конструкции я начал с B2 и использовал следующую формулу:
=IFERROR(
IF(ISBLANK(B1),
LARGE(child,COUNTA($A$2:A$2)+1),
VLOOKUP(B1,db,2,0)
),".")
В третьем листе с именем output я начал с A1 и использовал формулу:
=IFERROR(VLOOKUP(construct!B2,db,3,0),".")
Теперь последняя задача состоит в том, чтобы сделать формулы из конструкции и вывода для автоматического расходования при добавлении новой записи в основную таблицу, но я не думаю, что это возможно.
Редактировать 4
При импорте из sql на листе базы данных вместо диапазона будет таблица, поэтому формулы будут выглядеть немного иначе. Щелкните в любом месте таблицы, перейдите на вкладку «Дизайн» и переименуйте основание таблицы, затем в листе построения из b2 начните с этой формулы:
=IFERROR(
IF(ISBLANK(B1),
LARGE(INDIRECT("base[child]"),COUNTA($A$2:A$2)+1),
VLOOKUP(B1,base,2,0)
),".")