Excel VBA: Compley копировать и вставлять - PullRequest
0 голосов
/ 19 ноября 2018

как и многие из нас, я новичок в VBA.Часто я могу исследовать ответы на свои вопросы, но я полагаю, что это слишком конкретный вопрос.Я получил следующее расположение данных:

<table border=0 cellpadding=0 cellspacing=0 width=491 style='border-collapse:
 collapse;table-layout:fixed;width:368pt'>
 <col width=107 style='mso-width-source:userset;mso-width-alt:3913;width:80pt'>
 <col width=64 span=6 style='width:48pt'>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 width=107 style='height:15.0pt;width:80pt'>Production site</td>
  <td class=xl1523206 width=64 style='width:48pt'>Year</td>
  <td class=xl1523206 width=64 style='width:48pt'>Part 1</td>
  <td class=xl1523206 width=64 style='width:48pt'> Part 2</td>
  <td class=xl1523206 width=64 style='width:48pt'>Part 3</td>
  <td class=xl1523206 width=64 style='width:48pt'>Part 4</td>
  <td class=xl1523206 width=64 style='width:48pt'>Part n</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site A</td>
  <td class=xl1523206 align=right>2017</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site A</td>
  <td class=xl1523206 align=right>2018</td>
  <td class=xl1523206 align=right>8</td>
  <td class=xl1523206 align=right>6</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site A</td>
  <td class=xl1523206 align=right>2019</td>
  <td class=xl1523206 align=right>8</td>
  <td class=xl1523206 align=right>6</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site B</td>
  <td class=xl1523206 align=right>2017</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>3</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site B</td>
  <td class=xl1523206 align=right>2018</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Site B</td>
  <td class=xl1523206 align=right>2019</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=107 style='width:80pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
 </tr>
 <![endif]>
</table>

Количество деталей, производственных площадок и лет не ограничено.Теперь мне нужно скопировать данные и поместить их в другую структуру, чтобы иметь возможность работать с ними.

Вот так должны выглядеть данные:

<table border=0 cellpadding=0 cellspacing=0 width=491 style='border-collapse:
 collapse;table-layout:fixed;width:368pt'>
 <col width=107 style='mso-width-source:userset;mso-width-alt:3913;width:80pt'>
 <col width=64 span=6 style='width:48pt'>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 width=107 style='height:15.0pt;width:80pt'>Part</td>
  <td class=xl1523206 width=64 style='width:48pt'>Production Site</td>
  <td class=xl1523206 width=64 style='width:48pt'>2017</td>
  <td class=xl1523206 width=64 style='width:48pt'>2018</td>
  <td class=xl1523206 width=64 style='width:48pt'>2019</td>
  <td class=xl1523206 width=64 style='width:48pt'></td>
  <td class=xl1523206 width=64 style='width:48pt'>Year n</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 1</td>
  <td class=xl1523206 align=right>Site A</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 1</td>
  <td class=xl1523206 align=right>Site B</td>
  <td class=xl1523206 align=right>8</td>
  <td class=xl1523206 align=right>6</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 1</td>
  <td class=xl1523206 align=right>Site n</td>
  <td class=xl1523206 align=right>8</td>
  <td class=xl1523206 align=right>6</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>5</td>
  <td class=xl1523206 align=right>3</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 2</td>
  <td class=xl1523206 align=right>Site A</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>3</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 2</td>
  <td class=xl1523206 align=right>Site B</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl1523206 style='height:15.0pt'>Part 2</td>
  <td class=xl1523206 align=right>Site n</td>
  <td class=xl1523206 align=right>7</td>
  <td class=xl1523206 align=right>4</td>
  <td class=xl1523206 align=right>1</td>
  <td class=xl1523206 align=right>2</td>
  <td class=xl1523206 align=right>0</td>
 </tr>
 <![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=107 style='width:80pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
  <td width=64 style='width:48pt'></td>
 </tr>
 <![endif]>
</table>

Полагаю, мне нужно выполнить все виды индексации, циклов и так далее.Кто-нибудь с идеями, чтобы решить мою задачу?Я ценю любой вклад.Большое спасибо!

1 Ответ

0 голосов
/ 19 ноября 2018

Это можно сделать с помощью Powerquery.Вы отключаете Part и поворачиваетесь на год.

Загрузите таблицу, используя data> из таблицы, чтобы импортировать источник, в Excel 2013 используйте вкладку надстройки powerquery (бесплатная загрузка из Microsoft) в окне редактора, котороеоткроет вас, затем щелкнет правой кнопкой мыши по столбцам, чтобы развернуть / развернуть (или через вкладку преобразования) и, наконец, закрыть и загрузить на лист.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...