2016-12-18 7 views
0

さまざまな列を持つテーブルがあり、そのうちの1つは週番号を持ち、他のストアはhh:mm:私はこれらの両方を配列に入れようとしているので、簡単にコンパイルすることはできますが、文字列として配列に格納することはできません。時間は "00:10:22"のようになります。 0.3242342342などVBA Excel - 範囲と配列の列には時間と数値が含まれています。ループなしで文字列に変換するもの

週の列は= IFERROR(VALUE([@ [DC week]])、 "") であり、時間列はIFERROR(IF(LEFT(P2,1)= " - "、-TIMEVALUE(" 00:00 ")、TIMEVALUE(P2))、" ")

これは私が持っているものですが、配列はba 。二重のようCK、

Dim maxtime As String 
Dim tblLastRow As Integer 
Dim Arr As Variant 

Dim uniquesArray As Variant 
Dim lastRow As Long 

With Sheets("Raw2") 
    tblLastRow = .Cells(.Rows.Count, "A").End(xlUp).row 

    .Columns("X:X").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("AE1"), Unique:=True 
    lastRow = .Cells(.Rows.Count, "AE").End(xlUp).row 
    uniquesArray = .Range("AE2:AE" & lastRow) 

    .Columns("AE").ClearContents 


    .Columns("X:Y").Copy 
    .Columns("AE").PasteSpecial xlValues 


    Arr = .Range("AE2:AF" & tblLastRow) 

End With 


Sheet20.Columns("A:B").ClearContents 
Sheet20.Cells(1, 1) = "Week" 
Sheet20.Cells(1, 2) = "Time To Abandon" 
For a = 1 To UBound(uniquesArray) 
maxtime = "" 
    For i = 1 To UBound(Arr, 1) 
    If Arr(i, 1) = uniquesArray(a, 1) Then 
     If Arr(i, 2) > maxtime Then maxtime = Arr(i, 2) 
    End If 
    Next i 
    Sheet20.Cells(a + 1, 1) = uniquesArray(a, 1) 
    Sheet20.Cells(a + 1, 2) = maxtime 
Next a 
+1

は、あなたがそれらを、Excelで見てみたいどのようにフォーマットされている、あなたは '編曲= .Range(&tblLastRow "AF AE2")を変更することができるはずですAE2:AF "&tblLastRow)。テキスト'。あるいは、 'Format(Arr(i、2)、" hh:mm:ss ")'を使って変換することもできます。 – YowE3K

答えて

0

おかげYoeE3kを助けてください、列が私はしたいどのようにフォーマットされているはい、私が編曲= .Range( "AE2:AF" & tblLastRow)しようとしたの.textをそれがNULL配列を返さ! Format(Arr(i、2)、 "hh:mm:ss")を使用していたので、元の列を参照するだけで列をコピーする必要はありません。 「(編曲= .Range `に`:細胞を想定し

Dim maxtime As String 
Dim tblLastRow As Integer 
Dim Arr As Variant 

Dim uniquesArray As Variant 
Dim lastRow As Long 

With Sheets("Raw2") 
    tblLastRow = .Cells(.Rows.Count, "A").End(xlUp).row 
    .Columns("X:X").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("AE1"), Unique:=True 
    lastRow = .Cells(.Rows.Count, "AE").End(xlUp).row 
    uniquesArray = .Range("AE2:AE" & lastRow) 
    .Columns("AE").ClearContents 

    Arr = .Range("X2:Y" & tblLastRow) 

End With 

Sheet20.Columns("A:B").ClearContents 
Sheet20.Cells(1, 1) = "Week" 
Sheet20.Cells(1, 2) = "Max Time To Abandon" 
For a = 1 To UBound(uniquesArray) 
maxtime = "" 
    For i = 1 To UBound(Arr, 1) 
    If Arr(i, 1) = uniquesArray(a, 1) Then 
     If Format(Arr(i, 2), "hh:mm:ss") > maxtime Then maxtime = Format(Arr(i, 2), "hh:mm:ss") 

    End If 
    Next i 
    Sheet20.Cells(a + 1, 1) = uniquesArray(a, 1) 
    Sheet20.Cells(a + 1, 2) = maxtime 
Next a 
関連する問題