How can I unmerge cells, delete empty col and rows, relocate cells and combine? [Solved]

Report
Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020
-
Posts
2631
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
July 6, 2020
-
Hi dears,

first of all, I have to thank every one who read this message and he try to help me.

its a complicated matter to me.

Actually, I received Excel workbook, and there are 88 worksheets, this data is very sensitive, such as SN, Part No, Item Name, ... etc.

He request from me to combine all sheets in one sheet.

i search in google to solve this task but I don't know how to start to find the result.

I think after Analyzing it needs:
1. When I tried to combine data it says: can't combine because there are merge cells. So, how can I unmerge all data at one time.
2. How can delete all empty columns and rows at one time.

I hope you understand and to fine the answer here or advice me if you don't mind.

thank you again

3 replies

Posts
2631
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
July 6, 2020
429
Hi Alhaddadi,

Thanks for the clear answers. I'll get back to you on Thursday.

Best regards,
Trowa
2
Thank you

Glad we were able to help! Love us? Write us a review! Rate CCM

CCM 3372 users have said thank you to us this month

Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020

Hello Trowa,

I am very happy with your prompt response to me and I appreciate that effort that you save for me.

Many thanks
Posts
2631
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
July 6, 2020
429
Hi Alhaddadi,

You came to the right place!

The best and easiest way would be to use a VBA code. But for me to provide you one, I will need to understand your workbook and sheets setup.

Do all your sheets ALWAYS have:
1) Range A1:H7 for points 1 to 9?
2) Points 10 to 13 start on row 9?
3) 6 names (A10 to A15) or is this variable?

4) Are there any other sheets in your workbook that needs to be excluded from this combining action? If so, which are their names?

5) Your presented table of relocated data looks fine to me. Although, some people might want to put the data from A19 to I19 also in A20 to I24. Let me know what you want.

Let me know the answer to these 5 questions.

Best regards,
Trowa
Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020

Hi Trowa,
many thanks to you for cute welcome msg.

Do all your sheets ALWAYS have: around 88 sheets in exactly same format
1) Range A1:H7 for points 1 to 9? ===============> "A1:G7"
2) Points 10 to 13 start on row 9? ===============> "YES"
3) 6 names (A10 to A15) or is this variable? =======> 7 names "A10:A16"
4) Are there any other sheets in your workbook that needs to be excluded from this combining action? If so, which are their names? ===============> "NO"
5) Your presented table of relocated data looks fine to me. Although, some people might want to put the data from A19 to I19 also in A20 to I24. Let me know what you want. ===============> "It's fine for me, you have more experience than me, I need your advice"

Thanks for your help.
Posts
2631
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
July 6, 2020
429
Hi Alhaddadi,

Always happy to help someone who appreciates the effort!

I forgot to ask if you are familiair with using codes, so below you will find the code and below that an explanation of how to use it.

You should end up with a sheet named "Main", where all the data is assembled. I bolded and locked the header as well as autofitted the columns.

As for question 5, it is better to have all the data on a row for further data processing. For example, when you filter your data for Maker: Sony, you will want to see the data in the first 9 columns as well.

Here is the code:
Sub RunMe()
Dim sh As Worksheet, mHeader As Boolean, mR, sR As Long, mC, sC As Integer

Application.ScreenUpdating = False

Sheets.Add before:=Sheets(1)
ActiveSheet.Name = "Main"

mR = 2

With Sheets("Main")

    For Each sh In Worksheets
        sh.Select
        If sh.Name <> "Main" Then
            If mHeader = False Then
                .Range("A1").Value = Range("A2").Value
                .Range("B1").Value = Range("C2").Value
                .Range("C1").Value = Range("E2").Value
                .Range("D1").Value = Range("A4").Value
                .Range("E1").Value = Range("C4").Value
                .Range("F1").Value = Range("E4").Value
                .Range("G1").Value = Range("A6").Value
                .Range("H1").Value = Range("C6").Value
                .Range("I1").Value = Range("E6").Value
                .Range("J1").Value = Range("A9").Value
                .Range("K1").Value = Range("C9").Value
                .Range("L1").Value = Range("E9").Value
                .Range("M1").Value = Range("G9").Value
                mHeader = True
            End If
        
            .Range("A" & mR).Value = Range("A3").Value
            .Range("B" & mR).Value = Range("C3").Value
            .Range("C" & mR).Value = Range("E3").Value
            .Range("D" & mR).Value = Range("A5").Value
            .Range("E" & mR).Value = Range("C5").Value
            .Range("F" & mR).Value = Range("E5").Value
            .Range("G" & mR).Value = Range("A7").Value
            .Range("H" & mR).Value = Range("C7").Value
            .Range("I" & mR).Value = Range("E7").Value
            
            .Select
            Range(Cells(mR, "A"), Cells(mR, "I")).Copy .Range(Cells(mR + 1, "A"), Cells(mR + 6, "I"))
            
            sR = 10
            sC = 1
            mC = 10
            
            Do
                Cells(mR, mC).Value = sh.Cells(sR, sC).Value
                sC = sC + 2
                mC = mC + 1
                
                If sC = 9 Then
                    sR = sR + 1
                    sC = 1
                    mR = mR + 1
                    mC = 10
                End If
            Loop Until sR = 17
        End If
    Next sh
End With

Rows(1).Font.Bold = True
Cells.EntireColumn.AutoFit
Range("A2").Select
ActiveWindow.FreezePanes = True

Application.ScreenUpdating = True
End Sub


How to implement and run a code:

- From Excel hit Alt + F11 to open the “Microsoft Visual Basic” window.
- Go to the top menu in the newly opened window > Insert > Module.
- Paste the code in the big white field.
- You can now close this window.
- Back at Excel, hit Alt + F8 to display the available macro’s.
- Double-click the macro you wish to run.
NOTE: macro’s cannot be reversed using the blue arrows. Always make sure you save your file (or create a back up to be entirely sure) before running a code, so you can re-open your file if something unforeseen happens or you want to go back to the situation before the code was run.


Best regards,
Trowa
Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020

You are soo kind,
I will try this and I will let you know.

Thank you
Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020

Dear Trowa,

It's a nice code and it working very fine.

I am not that much good with codes, but I try to read and understand what is written

I appreciate your effort and time that I took for me. Did you know that with this code you saved me a lot of time that I will waste in collecting this information page by page I have to collect 7,425 sheets really it will take weeks or maybe months.

Many thanks dear.
Posts
2631
Registration date
Sunday September 12, 2010
Status
Moderator
Last seen
July 6, 2020
429 >
Posts
13
Registration date
Wednesday February 8, 2017
Status
Member
Last seen
July 3, 2020

That is awesome. Glad I could help you!