エクセルVBAで教えて下さい。
A1のセルに
[ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02
A2のセルに
[ 6-10] -5.12224e-04 4.07480e-04 -2.73746e-04 -1.77853e-02 -2.13805e-03
A3のセルに
[11-15] -6.88489e-03 -2.06765e-02 -9.44633e-03 6.97059e-03 -1.28400e-02
と、このような感じでA7セルまで同じ感じでスペースで空いた数値が入力されています。
A8のセルのみ
[36-37] -6.39210e-03 -1.55806e-03
と入力されております。
まず行いたいのはスペースが空いてる部分で、それぞれの数値を各セルに分けたいです。
A1のセルに入力されている
[ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02
ならば
A1に[1-5] B1セルに4.05398e-01 C1セルに3.63385e-01 のように
これをA1からA8のセルで行ったあと指定のセルを30行目に貼り付けます。
E1→A29 C2→B29 D2→C29 E2→D29 E3→E29 F3→F29 B4→G29
D5→H29 E5→I29 F5→J29
貼り付けのデータは増えていきます。つまり、30行目にデータが入ってる場合は
そのデータが1行下の行に下がり、新たなデータが30行目に追加されます。
このようにして、データが最大で58行目まで追加される可能性があります。
最小であれば30行目、31行目の2つしかない場合あります。
この時、0の近似値を各列のセルから探し、当てはまるセルを赤く塗り潰すというのが
今回行いたいことです。
A列ならA30~A58までの中で0の近似値を探し、当てはまるセルを赤く塗り潰す。
ただ空白の場合は無視してもらいたいです。0の近似値だと空白が選択されてしまうので。
近似値探しの前までならマクロがありますのでご参照下さい。
Sub Macro4()
'
' Macro4 Macro
'
'
Range("A1:A8").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(21, 1), Array(34, 1), Array(47, 1), _
Array(60, 1)), TrailingMinusNumbers:=True
Range("A1").Select
Range("E1").Select
Selection.Copy
Range("A29").Select
ActiveSheet.Paste
Range("C2:E2").Select
Application.CutCopyMode = False
Selection.Copy
Range("B29").Select
ActiveSheet.Paste
Range("E3:F3").Select
Application.CutCopyMode = False
Selection.Copy
Range("E29").Select
ActiveSheet.Paste
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Range("G29").Select
ActiveSheet.Paste
Range("D5:F5").Select
Application.CutCopyMode = False
Selection.Copy
Range("H29").Select
ActiveSheet.Paste
Range("J7").Select
Application.CutCopyMode = False
Range("A29:K29").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A29:K29").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("A29").Select
Range("A1:F8").Select
Selection.ClearContents
Range("A1").Select
Range("K29").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.NumberFormatLocal = "G/標準"
End Sub
わかりずらい質問ですみませんが、ご指導の程
お願い致します。
お礼
ところでこのやり方だと、#N/Aが無くなる迄繰り返し、IsTextを実行する必要がありますが、これはどのようにしたら良いでしょう? また、データを落とすのに結構時間がかかるのですが、IsTextを実行するインターバルみたいなものを設定することは可能でしょうか?
補足
有難うございます。ちょっと今トライできないので出社したら試して見ます(確かこの#N/AはIsNAでは拾えなかったような気がするので、IsTextでやってみようと思います)。