Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi all,
I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Ok,
I tried my luck and I've got it up to the point where I need to paste the data into excel. What I'm tracking with the Watch on arrLabel is not matching what I'm getting when pasted into excel. ReDim arrLabel(1 To LastRow) As Variant ReDim arrFUEGO(1 To LastRow) As Variant ReDim arrOxygen(1 To LastRow) As Variant LastRow = Cells(Rows.Count, "A").End(xlUp).Row For j = 1 To LastRow If Round(arrFUEGO(j, 1), 1) = 1 Then If arrOxygen(j, 1) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If Else If arrOxygen(j, 1) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If End If Next ActiveSheet.Range("X8:X" & LastRow).Value = arrLabel What's wrong with that last line? Thanks! Matt "Matt S" wrote: Hi all, I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I cleaned up the code a bit, but it still will not paste the array correctly
in excel! I can see using the watch in VB that the array is being created correctly. It is cycling through all the modes, but when pasting all excel says down the entire column is "Mode 1." This is infuriating. My data starts at row 8, so that is why I have the array start there. It does the same thing if I start the array at 1. LastRow = Cells(Rows.Count, "A").End(xlUp).Row 'Declare Arrays ReDim arrLabel(8 To LastRow) As String ReDim arrFUEGO(8 To LastRow) As Double ReDim arrOxygen(8 To LastRow) As Double For j = 8 To LastRow arrFUEGO(j) = Range("P" & j).Value arrOxygen(j) = Range("E" & j).Value Next j For j = 8 To LastRow If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel If I look at the array in the watch it looks like this: arrLabel(8) = "Mode 1" ... ... arrLabel(55) = "Mode 2" ... arrLabel(60) = "Mode 3" ... arrLabel(70) = "Mode 4" "Matt S" wrote: Hi all, I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel
should be: ActiveSheet.Range("Y8:Y" & LastRow).Value = application.transpose(arrLabel) I like to qualify my ranges, too. I'd use: Option Explicit Sub testme() Dim LastRow As Long Dim j As Long Dim arrLabel() As String Dim arrFUEGO() As Double Dim arrOxygen() As Double With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'redim Arrays ReDim arrLabel(8 To LastRow) ReDim arrFUEGO(8 To LastRow) ReDim arrOxygen(8 To LastRow) For j = 8 To LastRow arrFUEGO(j) = .Range("P" & j).Value arrOxygen(j) = .Range("E" & j).Value Next j For j = LBound(arrFUEGO) To UBound(arrFUEGO) If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next j '.Range("Y8:Y" & LastRow).Value = Application.Transpose(arrLabel) 'or 'I like this syntax so I don't have to care or know about the 'upper bound .Range("Y8").Resize(UBound(arrFUEGO) - LBound(arrFUEGO) + 1).Value _ = Application.Transpose(arrLabel) End With End Sub Matt S wrote: I cleaned up the code a bit, but it still will not paste the array correctly in excel! I can see using the watch in VB that the array is being created correctly. It is cycling through all the modes, but when pasting all excel says down the entire column is "Mode 1." This is infuriating. My data starts at row 8, so that is why I have the array start there. It does the same thing if I start the array at 1. LastRow = Cells(Rows.Count, "A").End(xlUp).Row 'Declare Arrays ReDim arrLabel(8 To LastRow) As String ReDim arrFUEGO(8 To LastRow) As Double ReDim arrOxygen(8 To LastRow) As Double For j = 8 To LastRow arrFUEGO(j) = Range("P" & j).Value arrOxygen(j) = Range("E" & j).Value Next j For j = 8 To LastRow If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel If I look at the array in the watch it looks like this: arrLabel(8) = "Mode 1" .. .. arrLabel(55) = "Mode 2" .. arrLabel(60) = "Mode 3" .. arrLabel(70) = "Mode 4" "Matt S" wrote: Hi all, I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt -- Dave Peterson |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Dave,
Why do you first Dim and then ReDim the arrays? Thanks! Matt "Dave Peterson" wrote: ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel should be: ActiveSheet.Range("Y8:Y" & LastRow).Value = application.transpose(arrLabel) I like to qualify my ranges, too. I'd use: Option Explicit Sub testme() Dim LastRow As Long Dim j As Long Dim arrLabel() As String Dim arrFUEGO() As Double Dim arrOxygen() As Double With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'redim Arrays ReDim arrLabel(8 To LastRow) ReDim arrFUEGO(8 To LastRow) ReDim arrOxygen(8 To LastRow) For j = 8 To LastRow arrFUEGO(j) = .Range("P" & j).Value arrOxygen(j) = .Range("E" & j).Value Next j For j = LBound(arrFUEGO) To UBound(arrFUEGO) If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next j '.Range("Y8:Y" & LastRow).Value = Application.Transpose(arrLabel) 'or 'I like this syntax so I don't have to care or know about the 'upper bound .Range("Y8").Resize(UBound(arrFUEGO) - LBound(arrFUEGO) + 1).Value _ = Application.Transpose(arrLabel) End With End Sub Matt S wrote: I cleaned up the code a bit, but it still will not paste the array correctly in excel! I can see using the watch in VB that the array is being created correctly. It is cycling through all the modes, but when pasting all excel says down the entire column is "Mode 1." This is infuriating. My data starts at row 8, so that is why I have the array start there. It does the same thing if I start the array at 1. LastRow = Cells(Rows.Count, "A").End(xlUp).Row 'Declare Arrays ReDim arrLabel(8 To LastRow) As String ReDim arrFUEGO(8 To LastRow) As Double ReDim arrOxygen(8 To LastRow) As Double For j = 8 To LastRow arrFUEGO(j) = Range("P" & j).Value arrOxygen(j) = Range("E" & j).Value Next j For j = 8 To LastRow If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel If I look at the array in the watch it looks like this: arrLabel(8) = "Mode 1" .. .. arrLabel(55) = "Mode 2" .. arrLabel(60) = "Mode 3" .. arrLabel(70) = "Mode 4" "Matt S" wrote: Hi all, I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt -- Dave Peterson |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I like all my declarations at the top.
I'm not sure if it makes a difference technically, but it makes more sense to me that way. Matt S wrote: Dave, Why do you first Dim and then ReDim the arrays? Thanks! Matt "Dave Peterson" wrote: ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel should be: ActiveSheet.Range("Y8:Y" & LastRow).Value = application.transpose(arrLabel) I like to qualify my ranges, too. I'd use: Option Explicit Sub testme() Dim LastRow As Long Dim j As Long Dim arrLabel() As String Dim arrFUEGO() As Double Dim arrOxygen() As Double With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'redim Arrays ReDim arrLabel(8 To LastRow) ReDim arrFUEGO(8 To LastRow) ReDim arrOxygen(8 To LastRow) For j = 8 To LastRow arrFUEGO(j) = .Range("P" & j).Value arrOxygen(j) = .Range("E" & j).Value Next j For j = LBound(arrFUEGO) To UBound(arrFUEGO) If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next j '.Range("Y8:Y" & LastRow).Value = Application.Transpose(arrLabel) 'or 'I like this syntax so I don't have to care or know about the 'upper bound .Range("Y8").Resize(UBound(arrFUEGO) - LBound(arrFUEGO) + 1).Value _ = Application.Transpose(arrLabel) End With End Sub Matt S wrote: I cleaned up the code a bit, but it still will not paste the array correctly in excel! I can see using the watch in VB that the array is being created correctly. It is cycling through all the modes, but when pasting all excel says down the entire column is "Mode 1." This is infuriating. My data starts at row 8, so that is why I have the array start there. It does the same thing if I start the array at 1. LastRow = Cells(Rows.Count, "A").End(xlUp).Row 'Declare Arrays ReDim arrLabel(8 To LastRow) As String ReDim arrFUEGO(8 To LastRow) As Double ReDim arrOxygen(8 To LastRow) As Double For j = 8 To LastRow arrFUEGO(j) = Range("P" & j).Value arrOxygen(j) = Range("E" & j).Value Next j For j = 8 To LastRow If Round(arrFUEGO(j), 1) <= 0.95 Then If arrOxygen(j) 0 Then arrLabel(j) = "Mode 3" Else arrLabel(j) = "Mode 2" End If Else If arrOxygen(j) 0 Then arrLabel(j) = "Mode 4" Else arrLabel(j) = "Mode 1" End If End If Next ActiveSheet.Range("Y8:Y" & LastRow).Value = arrLabel If I look at the array in the watch it looks like this: arrLabel(8) = "Mode 1" .. .. arrLabel(55) = "Mode 2" .. arrLabel(60) = "Mode 3" .. arrLabel(70) = "Mode 4" "Matt S" wrote: Hi all, I have 50 hours of data, second by second in excel. I am trying to label each point as 1 of 4 modes based on certain criteria. My 'Oxygen' is a column that says if my oxygen is on or not. My UEGO is another column that is either at 1 or 0.9. These are the criteria for the modes. Mode 1 (~10sec): Oxygen = 0 UEGO ~ 1 Mode 2 (~10 sec): Oxygen = 0 UEGO ~ 0.9 Mode 3 (~5 sec): Oxygen = 1 UEGO ~ 0.9 Mode 4 (~10 sec): Oxygen = 1 UEGO ~1 I'd like to use arrays to label the data to make this process fast. My array knowlege is a little weak. Any help would be greatly appreciated! Thanks! Matt -- Dave Peterson -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Trouble with arrays (transferring values between two arrays) | Excel Programming | |||
Working with ranges in arrays... or an introduction to arrays | Excel Programming | |||
Arrays - declaration, adding values to arrays and calculation | Excel Programming | |||
Labeling plots! | Excel Programming | |||
labeling | Excel Programming |