|
▼Kein さん:
▼ウッシさん:
本当にありがとうございました。
おかげさまで、やりたい事が完璧に出来ました。
>では、これでどうかな・・?
>
>Sub Check_Data2()
> Dim Ary As Variant, Ary2 As Variant
> Dim i As Long, Num As Single
> Dim C As Range
> Dim V As String, MyS As String, RetSt As String
> Const CkSt As String = _
> "N20,(Z2.4),N20,(Z-6.0),N30,(Z1.0),N20,(Z-3.5),N30,(Z-5.0)"
>
> Application.ScreenUpdating = False
> Range("IT1:IU1").Value = Array("Data1", "Data2")
> Ary = Split(CkSt, ")")
> For i = 0 To UBound(Ary) - 1
> V = CStr(Ary(i)): Ary2 = Split(V, "Z")
> MyS = Ary2(0)
> Num = Val(Ary2(1))
> If Left$(MyS, 1) = "," Then
> MyS = Right$(MyS, Len(MyS) - 1)
> End If
> Cells(i + 2, 254).Value = MyS
> Cells(i + 2, 255).Value = Num
> Erase Ary2
> Next i
> Range("IT:IU").Sort Key1:=Range("IT1"), Order1:=xlAscending, _
> Key2:=Range("IU1"), Order2:=xlAscending, Header:=xlYes, _
> Orientation:=xlSortColumns
> With Range("IU2", Range("IU65536").End(xlUp)).Offset(, 1)
> .Formula = "=IF($IT1<>$IT2,$IU2)"
> For Each C In .SpecialCells(3, 1)
> RetSt = RetSt & C.Offset(, -2).Value & _
> "Z" & Format(C.Value, "###.0") & "),"
> Next
> '.CurrentRegion.ClearContents
> End With
> RetSt = Left$(RetSt, Len(RetSt) - 1)
> Application.ScreenUpdating = True
> Debug.Print RetSt
>End Sub
>
>加工前の文字例としては、上(CkSt)のようになるべくいろいろなケースを
>交えた方がいいです。なぜなら例文では偶然できたけど、他の文字列で
>やってみたら希望の形と違っていた、という可能性が高くなるからです。
|
|