Объедините несколько верхних рядов и продвигайте их как Заголовки - PullRequest
0 голосов
/ 30 сентября 2019

Я импортирую извлечение данных Excel в MSQuery с использованием ODBC, данные которого выглядят следующим образом:

Col1   Col2   Col3   Col4   Col5   Col6   Col7   Col8   Col9   Col10   Col11
----------------------------------------------------------------------------
null   null   null   null   null   null   null   Units  Units  %Reach %Reach
Mkts   Dept   SCat   Cat    Seg   Brnd   UPC   4 W/E 10/06/17   4 W/E 11/03/17   4 W/E 12/01/17   4 W/E 02/02/17
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   3939493   231.11   883.43   49.13
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   5946942   422.32   222.64   91.84
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   4938843   543.34   null     null
CDE   Dept2  Cat2   BEV    NVEG   SAG    0549403   null     2        null
DEF   Dept3  Cat3   UTL    DARY   MUG    4032850   null     null     null

Иногда файлы данных могут содержать дополнительные пустые строки в верхней части, при этом некоторые из начальных ячеек имеютнекоторый текст.

Col1   Col2   Col3   Col4   Col5   Col6   Col7   Col8   Col9   Col10   Col11
----------------------------------------------------------------------------
sumtxt null   null   null   null   null   null   null   null   null    null
null   null   null   null   null   null   null   null   null   null    null
null   null   null   null   null   null   null   Units  Units  %Reach %Reach
Mkts   Dept   SCat   Cat    Seg   Brnd   UPC   4 W/E 10/06/17   4 W/E 11/03/17   4 W/E 12/01/17   4 W/E 02/02/17
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   3939493   231.11   883.43   49.13
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   5946942   422.32   222.64   91.84
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   4938843   543.34   null     null
CDE   Dept2  Cat2   BEV    NVEG   SAG    0549403   null     2        null
DEF   Dept3  Cat3   UTL    DARY   MUG    4032850   null     null     null

Теперь строка, показанная ниже, является строкой фактов:

null   null   null   null   null   null   null   Units  Units  %Reach %Reach

А строка, которая находится под ней, является строкой измерений:

Mkts   Dept   SCat   Cat    Seg   Brnd   UPC   4 W/E 10/06/17   4 W/E 

Я хочу как-то удалить верхние пустые строки, объединить строки измерений со строками фактов, чтобы получить одну строку. Затем продвиньте эту строку как строку заголовка. например,

Mkts   Dept   SCat   Cat    Seg   Brnd   UPC   Units~4 W/E 10/06/17   Units~4 W/E 11/03/17    %Reach~4 W/E 12/01/17   %Reach~4 W/E 02/02/17

Примечание. Строка измерений может различаться, и их имена могут различаться в каждой выборке данных. Аналогичным образом, строка «Факты» может различаться, и их имена могут различаться в каждом извлечении данных.

Возможно ли сделать это преобразование в SQL, то же самое в MS Query, чтобы я получил чистую таблицукак это:

Mkts   Dept   SCat   Cat    Seg   Brnd   UPC   Units~4 W/E 10/06/17   Units~4 W/E 11/03/17    %Reach~4 W/E 12/01/17   %Reach~4 W/E 02/02/17
----------------------------------------------------------------------------
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   3939493   231.11   883.43   49.13
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   5946942   422.32   222.64   91.84
ABC   Dept1  Cat1   FOOD   VEGG   XWAR   4938843   543.34   null     null
CDE   Dept2  Cat2   BEV    NVEG   SAG    0549403   null     2        null
DEF   Dept3  Cat3   UTL    DARY   MUG    4032850   null     null     null

1 Ответ

1 голос
/ 04 октября 2019

Грубый контур -

' FindFolder that has the XLS files to import

' myFile = Dir *.xls

' Do While myFile <> ""

   ' Open the xls file

   ' if sheetName = "Fixed" then delete that sheet ' we will recreate it

   ' Select sheetName to import

   ' Activate that sheet

   ' Find Facts row and put values into one-based array FactsRow()
   ' Find Dimensions row and put values into one-based array DimenRow()
   ' Save row# of Dimensions row

   ' If ColHeaders ok (no Facts or Dimen rows), then 
      ' MSQuery import from Existing sheet to MSAccess
      ' jump to Dir stmt
   ' endif

   ' Create new sheet, and columns using FactsRow and DimenRow, per the following--
   ' https://stackoverflow.com/questions/49832151/how-to-create-a-new-sheet-table-in-an-xlsx-file-using-ado-in-excel-vba

   ' copy DataRows from DimenRowNum+1 thru end to Fixed sheet

   ' Save and close this XLS

   ' do MSQuery to import from Fixed sheet to MSAccess

   ' myFile = Dir  ' get filename of next xls file
' Loop  ' until all xls files processed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...