|
▼Kein さん:
▼ウッシさん:
ご教授ありがとうございます。
やりたい事ができそうです。
Keinさんへ
あと、整数の値も扱いたいのですが、どこをどう変更したら
整数も扱えるのでしょうか。
色々、ためしにコードを触ってみたり調べたりしてみましたが、
私が触れば触るほど、泥沼に・・・・・。すいません。
数値的に、よりマイナス値をチョイスしたいです。
(下記の文字列Aを文字列Bとして抽出したいです)
(N30がかぶっており、Z1.0とZ-5.0なのでZ-5.0を抽出)
文字列A:"N20,(Z-5.0),N30,(Z1.0),N30,(Z-5.0)"
文字列B:"N20,(Z-5.0),N30(Z-5.0)
申し訳ありませんが、何卒よろしくお願いいたします。
>アクティブシートの IT:IV列 を作業列として使います。
>結果は変数 RetSt に格納されます。イミディエイトウィンドゥへ出力しますから
>確認して下さい。なお、作業列の処理状態を見たい場合は、予め
>>.CurrentRegion.ClearContents
>の行頭に "'" を付けてコメント化して下さい。
>
>Sub Check_Data()
> 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,(Z-2.4),N20,(Z-5),N30,(Z-2.4),N20,(Z-3.5),N30,(Z-5)"
>
> 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, "-")
> 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 = WorksheetFunction.Round(Num, 1)
> Erase Ary2
> Next i
> Range("IT:IU").Sort Key1:=Range("IT1"), Order1:=xlAscending, _
> Key2:=Range("IU1"), Order2:=xlDescending, 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 & "-" & _
> C.Offset(, -1).Value & "),"
> Next
> .CurrentRegion.ClearContents
> End With
> RetSt = Left$(RetSt, Len(RetSt) - 1)
> Application.ScreenUpdating = True
> Debug.Print RetSt
>End Sub
|
|