Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
I have what seems to be an easy problem which I am unable to solve....
I have a matrix, lets say A B C D E F G H I J K L and I want to extrat every 6th element reading from left to right, i.e. F, L etc..... Any ideas? I though I could put the matrix into a vertical series, i.e. A B C D etc.... and then choose every 6th number but I can't even get that far!!!! Thanks for any help.... |
#2
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
Try this macro! Adjust values for mrows and mcols to suit your matrix sizes!
Sub element6() Dim c6 As Range mrows = 3 mcols = 4 For melem = 1 To mrows Range(Cells(melem, 1), Cells(melem, mcols)).Select Selection.Copy Cells((melem - 1) * mcols + 1, mcols + 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next melem Application.CutCopyMode = False ccounter = 0 For Each c6 In Range(Cells(1, mcols + 1), Cells(mrows * mcols, mcols + 1)) If c6.Row Mod 6 = 0 Then ccounter = ccounter + 1 Cells(ccounter, mcols + 2).Value = c6.Value End If Next c6 End Sub Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I have what seems to be an easy problem which I am unable to solve.... I have a matrix, lets say A B C D E F G H I J K L and I want to extrat every 6th element reading from left to right, i.e. F, L etc..... Any ideas? I though I could put the matrix into a vertical series, i.e. A B C D etc.... and then choose every 6th number but I can't even get that far!!!! Thanks for any help.... |
#3
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
I'm sorry but I'm not familiar with using macros in excel. How would I
implement this trick? Thanks "Stefi" wrote: Try this macro! Adjust values for mrows and mcols to suit your matrix sizes! Sub element6() Dim c6 As Range mrows = 3 mcols = 4 For melem = 1 To mrows Range(Cells(melem, 1), Cells(melem, mcols)).Select Selection.Copy Cells((melem - 1) * mcols + 1, mcols + 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next melem Application.CutCopyMode = False ccounter = 0 For Each c6 In Range(Cells(1, mcols + 1), Cells(mrows * mcols, mcols + 1)) If c6.Row Mod 6 = 0 Then ccounter = ccounter + 1 Cells(ccounter, mcols + 2).Value = c6.Value End If Next c6 End Sub Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I have what seems to be an easy problem which I am unable to solve.... I have a matrix, lets say A B C D E F G H I J K L and I want to extrat every 6th element reading from left to right, i.e. F, L etc..... Any ideas? I though I could put the matrix into a vertical series, i.e. A B C D etc.... and then choose every 6th number but I can't even get that far!!!! Thanks for any help.... |
#4
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
This is an improved version:
Sub element6_2() Dim c6 As Range, topleft As Range, bottomright As Range Set topleft = Range("E15") 'replace E15 by cell reference of the top left cell of the matrix mrows = 5 'replace 5 by No of rows of the matrix mcols = 4 'replace 4 by No of columns of the matrix Set bottomright = Cells(topleft.Row + mrows - 1, topleft.Column + mcols - 1) ccounter = 0 c6counter = 0 For Each c6 In Range(topleft, bottomright) ccounter = ccounter + 1 If ccounter Mod 6 = 0 Then c6counter = c6counter + 1 Cells(topleft.Row + c6counter - 1, topleft.Column + mcols).Value = c6.Value End If Next c6 End Sub To implement macro: Press Alt+F11 (Microsoft Visual Basic window appears) If you don't see Project window on the left, press Ctrl+R Right click on VBAProject(yourxlsfilename) Choose InsertModule from the local menu, yourxlsfilename - appears Copy macro code into Module1(Code) window To run macro: Make sure the cursor is inside the macro code and press F5 You can also assign a hot key to the macro in Excel's Alt+F8Options. Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I'm sorry but I'm not familiar with using macros in excel. How would I implement this trick? Thanks "Stefi" wrote: Try this macro! Adjust values for mrows and mcols to suit your matrix sizes! Sub element6() Dim c6 As Range mrows = 3 mcols = 4 For melem = 1 To mrows Range(Cells(melem, 1), Cells(melem, mcols)).Select Selection.Copy Cells((melem - 1) * mcols + 1, mcols + 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next melem Application.CutCopyMode = False ccounter = 0 For Each c6 In Range(Cells(1, mcols + 1), Cells(mrows * mcols, mcols + 1)) If c6.Row Mod 6 = 0 Then ccounter = ccounter + 1 Cells(ccounter, mcols + 2).Value = c6.Value End If Next c6 End Sub Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I have what seems to be an easy problem which I am unable to solve.... I have a matrix, lets say A B C D E F G H I J K L and I want to extrat every 6th element reading from left to right, i.e. F, L etc..... Any ideas? I though I could put the matrix into a vertical series, i.e. A B C D etc.... and then choose every 6th number but I can't even get that far!!!! Thanks for any help.... |
#5
![]()
Posted to microsoft.public.excel.misc
|
|||
|
|||
![]()
I was thinking a little bit and realized that the job can be done without VBA:
Being your matrix in columns A:D, enter formula =ROW()*6 (6 represents looking for every 6th element) in E1, drag it down as necessary (in your example to row 3) enter No of columns of matrix in F1 (in your example 4) enter formula =INDIRECT(ADDRESS(CEILING(E1/$F$1,1),IF(MOD(E1/$F$1,1)0,MOD(E1/$F$1,1),1)*4,4,1)) in G1, drag it down as necessary (in your example to row 3) It will return F L R in G1:G3 Regards, Stefi €˛Stefi€¯ ezt Ć*rta: This is an improved version: Sub element6_2() Dim c6 As Range, topleft As Range, bottomright As Range Set topleft = Range("E15") 'replace E15 by cell reference of the top left cell of the matrix mrows = 5 'replace 5 by No of rows of the matrix mcols = 4 'replace 4 by No of columns of the matrix Set bottomright = Cells(topleft.Row + mrows - 1, topleft.Column + mcols - 1) ccounter = 0 c6counter = 0 For Each c6 In Range(topleft, bottomright) ccounter = ccounter + 1 If ccounter Mod 6 = 0 Then c6counter = c6counter + 1 Cells(topleft.Row + c6counter - 1, topleft.Column + mcols).Value = c6.Value End If Next c6 End Sub To implement macro: Press Alt+F11 (Microsoft Visual Basic window appears) If you don't see Project window on the left, press Ctrl+R Right click on VBAProject(yourxlsfilename) Choose InsertModule from the local menu, yourxlsfilename - appears Copy macro code into Module1(Code) window To run macro: Make sure the cursor is inside the macro code and press F5 You can also assign a hot key to the macro in Excel's Alt+F8Options. Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I'm sorry but I'm not familiar with using macros in excel. How would I implement this trick? Thanks "Stefi" wrote: Try this macro! Adjust values for mrows and mcols to suit your matrix sizes! Sub element6() Dim c6 As Range mrows = 3 mcols = 4 For melem = 1 To mrows Range(Cells(melem, 1), Cells(melem, mcols)).Select Selection.Copy Cells((melem - 1) * mcols + 1, mcols + 1).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Next melem Application.CutCopyMode = False ccounter = 0 For Each c6 In Range(Cells(1, mcols + 1), Cells(mrows * mcols, mcols + 1)) If c6.Row Mod 6 = 0 Then ccounter = ccounter + 1 Cells(ccounter, mcols + 2).Value = c6.Value End If Next c6 End Sub Regards, Stefi €˛Alex Rauket€¯ ezt Ć*rta: I have what seems to be an easy problem which I am unable to solve.... I have a matrix, lets say A B C D E F G H I J K L and I want to extrat every 6th element reading from left to right, i.e. F, L etc..... Any ideas? I though I could put the matrix into a vertical series, i.e. A B C D etc.... and then choose every 6th number but I can't even get that far!!!! Thanks for any help.... |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Plot data from column to matrix | Excel Discussion (Misc queries) | |||
Plot data from column to matrix | Excel Discussion (Misc queries) | |||
Create a matrix from data in three column | Excel Discussion (Misc queries) | |||
Matrix to single column | Excel Worksheet Functions | |||
Making a Bubble Chart based on n-values matrix | Charts and Charting in Excel |