Results 1 to 10 of 14

Thread: Copy data from multiple rows between two keyword and paste the data in row(s) of single cell in sheet2

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Administrator Excel Fox's Avatar
    Join Date
    Mar 2011
    Posts
    1,401
    Rep Power
    10
    saw the outputs in sheet2 already - but it's not clear how you got those outputs from keyword1 and keyword2. that's why i am asking to explain it.
    A dream is not something you see when you are asleep, but something you strive for when you are awake.

    It's usually a bad idea to say that something can't be done.

    The difference between dream and aim, is that one requires soundless sleep to see and the other requires sleepless efforts to achieve

    Join us at Facebook

  2. #2
    Junior Member
    Join Date
    Apr 2022
    Posts
    10
    Rep Power
    0
    Keywrod1 and Keyword2 are themselves keywords. Hope it is clear now.
    Instead of keyword1 and keyword2 let's say "Keywrod1" is "[Code1]" and keyword2 as "[/Code1]"

    Search: "Keywrod1" alias "[Code1]"
    Search: "Keywrod2" alias "[/Code1]"
    copy text between them in cells as shown in the excel sheet.

  3. #3
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    10,457
    Rep Power
    10
    A solution.
    Solution 1
    Advanced complex
    A possible solution to this would combine some of the various string manipulation ides that I have already done for you, and something new for you: the use of the Windows Clipboard in conjunction with an Excel range .Copy

    Use of the Windows Clipboard, (Copying and Pasting with it in Excel)
    The basic idea of what I am doing here:
    As a start point I want to analyse the text in your column A using my function again. But the difference here is that I will not look directly at the text, but instead, first copy the text to the Windows Clipboard, and then look at that.
    Use of the Windows Clipboard, Copying and Pasting with it in Excel)
    Three things to consider here, .Copy , Windows.Paste, VBA DataObject
    Copy
    We find that if we .Copy an excel range, then it gets put in several clipboards, including the Windows Clipboard. What the Windows Clipboard holds is usually mostly simple unformatted text and the only characters other than text are usually only the simplest text formatting “invisible” ones of , a Tab, Carriagereturn and Linefeed.
    Paste
    Similarly, we find that using the worksheet .Paste method will put this copied data, in simple text form into a range. Usually this information comes from that simple text form held in the windows clipboard.
    dataobject
    In VBA we can both put into and access the simple text data in the windows clipboard using the dataobject
    So….
    What we can do is,
    _ Copy the data from column A
    _ Use the dataobject to get at that data from the windows clipboard, modify it in some way and then put the modified form back in the windows clipboard using the dataobject. (We will attempt to modify it in such a way that if we then paste it out to sheet 2, then it will appear in the final form we want
    _ Paste the modified data into sheet 2

    Copy and analyse the data in the windows clipboard using my function
    See here : https://excelfox.com/forum/showthrea...ll=1#post18381
    ( ** I am using my reduced data version of your test file:
    VBA row to cell1 reduced data.xls https://app.box.com/s/qne60lkrfp30d50w444gedzjg6b7nyat )
    Conclusions
    The row separator in the windows clipboard is that most typically used for a new line in computing, a Carriage return and a Line feed ( in VBA coding vbCr & vbLf ).
    For a new line within a cell, we have the typical convention in Excel of just the Line feed ( in VBA coding, vbLf )
    In the case of 2 or more lines within a cell, the entire string for the cell is enclosed in a pair of quotes. ( I expect this is to help avoid the vbLf being taken as a new row )

    The implications of the conclusions are that to consolidate / reduce cells into a single cell, we will need to do 2 things:
    _ replace the vbCr & vbLf for empty cells with a vbLf. This will have the effect of giving an empty line within the cell text in place of an empty row.
    _ remove all quotes, but then add just one pair of quotes enclosing all the text and empty lines that should appear in one cell.
    ( Of course we will need to do some coding to locate the keywords so as to determine which cell text and any empty cells that are to be in one cell in the output. This may actually be quite a complex coding.)

    Detailed explanation of solution
    This is an advanced solution, and I have tried to give good detailed explanations of most code lines in the 'comments.
    Here is an attempt to summarise
    Rem 1 copies the used range which has the effect of putting the entire data range in the clipboards, including the windows clipboard, which we are interested in.
    Rem 2This gets the text that is held in the windows clipboard into a string variable, StringBack
    Rem 3 is a typical code type section before some looping which then repeats in some looping process. We get positional information here about the fist keyword
    ( There is also a check that we have a matching next second keyword, so as not to loop further in the case of a first keyword towards the end of the data, but no final second keyword )
    Rem 4 This is the main section, quite complex and I can only summarise here
    '4a) We are at the start of a main outer loop, which will loop as long as we have a next pair of keywords. This is a second typical code section before a second inner loop which is looping for all cells within any pair of keywords. In this section we get the text from the first cell
    '4b) We are stepping through all the cells within a keyword pair
    '4c) At this point we have the complete text for a new single cell and are just before the end of the main loop, so almost ready to go on to the next pair of keywords. We need to format this text to allow us to have a form to put back in the windows clipboard that will
    .Paste out in the consolidated cell format we want for the final output. Two main things are done:
    _ we may need to add an enclosing quote that tells the clipboard and Excel that there are multi line text to paste into a single cell.
    _ We need to add a final trailing vbCr & vbLf as this will be recognised as meaning a new row, ( next output cell in our case )
    ( These two things we determined here: https://excelfox.com/forum/showthrea...ll=1#post18381 )
    '4c(ii) This is a typical end section at the end of a loop, which sets the info necessary for the next loop, and gets similar info to Rem 3

    Rem 5 Put our final manipulated text in clipboard
    Rem 6 .Paste out from windows clipboard

    Here is Solution 1
    Sub ConsolidateLines_Solution1()
    https://excelfox.com/forum/showthrea...ll=1#post18394
    ….If you are my competitor, I will try all I can to beat you. But if I do, I will not belittle you. I will Salute you, because without you, I am nothing.
    If you are my enemy, we will try to kick the fucking shit out of you…..
    Winston Churchill, 1939
    Save your Forum..._
    KILL A MODERATOR!!

  4. #4
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    10,457
    Rep Power
    10
    Second Solution
    Solution 2

    The first solution, Solution 1, is somewhat complex but represents a fairly efficient professional solution. It follows the typical form of more advanced and more efficient solutions, whereby the entire data is taken into VBA in some way, ( Solution 1 did it via the windows clipboard to get a single string of all the data ) , all the main work and manipulation is done within VBA, and then the final output data is put in the spreadsheet in one go.
    But here in Solution 2, I do a more basic “Spreadsheet interaction” type coding solution. Such solutions are often much easier for the novice to understand, but often the extra interactions with the spreadsheet make things inefficient. We often say that every interaction of coding with a spreadsheet is like “slamming the brakes on

    The coding has a similar structure to that for the Solution 1, but is a bit simpler and easier to follow. I have numbered the sections such that they correspond to similar sections in the two solutions.

    Rem 3 gets us the first cell we are interested in for a keyword pair, just before we go into the main looping. You can see that at the end of the main loop we have the typical section again, '4c(ii) , getting us similar information for the next first cell in a keyword pair.
    '4b) is the section to make a new cell for output, nut in this solution that information is pasted out each time, ( so we have no final sections in the coding to paste oput all in one go, as we did in Solution 1 )

    Here is Solution 2
    Sub ConsolidateLines_Solution2()
    https https://excelfox.com/forum/showthrea...ll=1#post18395













    That’s it , for now


    Alan
    ….If you are my competitor, I will try all I can to beat you. But if I do, I will not belittle you. I will Salute you, because without you, I am nothing.
    If you are my enemy, we will try to kick the fucking shit out of you…..
    Winston Churchill, 1939
    Save your Forum..._
    KILL A MODERATOR!!

  5. #5
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    10,457
    Rep Power
    10
    spare post for extra solution later
    Last edited by DocAElstein; 10-16-2022 at 01:16 AM.
    ….If you are my competitor, I will try all I can to beat you. But if I do, I will not belittle you. I will Salute you, because without you, I am nothing.
    If you are my enemy, we will try to kick the fucking shit out of you…..
    Winston Churchill, 1939
    Save your Forum..._
    KILL A MODERATOR!!

Similar Threads

  1. Replies: 2
    Last Post: 03-08-2014, 02:49 AM
  2. Replies: 0
    Last Post: 12-24-2013, 01:36 PM
  3. Replies: 10
    Last Post: 08-31-2013, 06:56 PM
  4. Replies: 1
    Last Post: 08-23-2013, 05:19 AM
  5. Replies: 2
    Last Post: 02-11-2013, 08:13 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •