Create new Excel rows based on column Heading and populate the data -


i have create output xls file based on input xls file header. giving below exact requirement. hope clear. if not please let me know.

iput xls --> id  version namelegacy  projectnumber   ownername   language    keywords    ownersite   external    content relevance   periodic    coremap validto 1   1   mohan   1000    x   eng abcd    ab  no  ok  no  5   2017-10-14  2018-10-14 2   2   shayam  1001    y   eng efgh    bc  no  ok  yes 2   2017-10-14  2018-10-14 3   1   sourabh 1002    z   eng ijkl    cd  yes no  no  4   2017-10-14  2018-10-14 

based on input xls file, need output xls file below. each row of input file have 12 row of output file , respective value filled in output file input file.

id  version ibaname stringvalue integervalue    floatvalue  floatvaluewithunits boolvalue   timevalue   urlvalue    referencevalue 1   1   namelegacy  mohan                            1   1   projectnumber           1000                             1   1   ownername   x                            1   1   language    eng                          1   1   keywords    abcd                             1   1   ownersite                                                                                       ab                           1   1   external                                                                no           1   1   content                                                                                                     ok                           1   1   relevance                                                               no                           1   1   periodic                5                            1   1   coremap                                                                              2017-10-14      1   1   validto                                                                              2018-10-14      2   2   namelegacy  shayam                           2   2   projectnumber           1001                             2   2   ownername   y                            2   2   language    eng                          2   2   keywords    efgh                             2   2   ownersite                                                                                       bc                           2   2   external                                                                no           2   2   content                                                                                                     ok                           2   2   relevance                                                               yes                          2   2   periodic                2                            2   2   coremap                                                                              2017-10-14      2   2   validto                                                                              2018-10-14      3   1   namelegacy  sourabh                          3   1   projectnumber           1002                             3   1   ownername   z                            3   1   language    eng                          3   1   keywords    ijkl                             3   1   ownersite                                                                                       cd                           3   1   external                                                                yes          3   1   content                                                                                                     no                           3   1   relevance                                                               no                           3   1   periodic                4                            3   1   coremap                                                                              2017-10-14      3   1   validto                                                                              2018-10-14      

thanks in advance.

there few steps using vba. main purpose identify trying do.

it seems attempting sort through records identify format of information , place in column designated format. this, have created simple custom function..

this function takes in name of header string, , uses select/case find appropriate matches column target sheet needs. custom specific layout. feel free adapt or change it.

function find correct column on target

function colfinder(header string) long   'target column format = column #  '"stringvalue"        = 4 '"integervalue"       = 5 '"floatvalue"         = 6 '"floatvaluewithunits"= 7 '"boolvalue"          = 8 '"timevalue"          = 9 '"urlvalue"           = 10 '"referencevalue"     = 11   ' **** set values cases match desired format above  ****  'default column 4 stringvalue if unknown     select case header         case "namelegacy"             colfinder = 4         case "projectnumber"             colfinder = 5         case "ownername"             colfinder = 4         case "language"             colfinder = 4         case "keywords"             colfinder = 4         case "ownersite"             colfinder = 10         case "external"             colfinder = 8         case "content"             colfinder = 11         case "relevance"             colfinder = 8         case "periodic"             colfinder = 5         case "coremap"             colfinder = 9         case "validto"             colfinder = 9     end select  end function 

using few other functions finding last row & last column

last row function

function lastrow(sheet string) long      lastrow = sheets(sheet).cells(rows.count, "a").end(xlup).row    'using cells()  end function 

last column function

function lastcol(sheet string) long      lastcol = sheets(sheet).cells(1, columns.count).end(xltoleft).column  end function 

with these 3 functions, can run simple loop through source sheet, 1 row @ time, see column data coming from, , place on appropriate target.

this example using 2 worksheets in same workbook. change, extend address include other workbooks or sheets. simplest way show concept.

code loop through sheets

sub colstorows()  dim trow long, scol long, srow long dim source string, target string dim tstring string  source = "sheet1" target = "sheet2"  'set target row starting point trow = 2      'loop through source rows data, starting after header row     srow = 2 lastrow(source)          'loop through each header in source row         scol = 3 lastcol(source)              'set basic columns on target             sheets(target).cells(trow, 1) = sheets(source).cells(srow, 1)             sheets(target).cells(trow, 2) = sheets(source).cells(srow, 2)              'get header name temp string find format requires             tstring = sheets(source).cells(1, scol)              'label column 3 of target             sheets(target).cells(trow, 3) = sheets(source).cells(1, scol)              'find appropriate column using custom formula [colfinder(header string) long]             sheets(target).cells(trow, colfinder(tstring)) = sheets(source).cells(srow, scol)              'advance next target row             trow = trow + 1          next scol      next srow  end sub 

source sheet example source sheet

target sheet example target sheet


Comments