- ベストアンサー
データ抽出についての質問
- 以前の質問で作成されたマクロが行と列の挿入に対応していないため、機能しなくなってしまいました。
- セルに入力されたデータを指定の形式に変換するために、関数またはマクロを使用する方法について教えてください。
- 新しいデータのセルに対応するようにマクロを修正する方法が分からないので、助けていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >Mid(Cells(i, 2).Value, ii, 2) は Mid(Cells(i, 2).Value, ii, 1) でしょうね。 CellsプロパティとMid関数を一緒にしちゃってます。 ii,1 の1は1文字を選んでいる(判定のために)だけで、A列という意味ではないですよ。 Mid(string, start[, length]) string:文字列を指定。(この場合Cells(i,2).Value) start:文字列の何文字目かを指定。(この場合iiで決まる) length:取り出す文字数を指定。(この場合1文字ずつ判定する必要があるので1) ~VBAヘルプを参照~
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
Cells(行番号,列番号) ですから、 Cells(i,1) の時は1列目(A列)のi行目となります。 B列にしたい場合は、 Cells(i,2) で2列目(B列)のi行目となります。 あとは範囲で"a65536"が"b65536"となる。 こんな感じではないかと。
補足
n-jun様 ご回答ありがとうございます。 Sub test() Dim i, ii, iii Dim a As String For i = 1 To Range("b65536").End(xlUp).Row b = "" iii = 0 For ii = 1 To Len(Cells(i, 2).Value) If IsNumeric(Mid(Cells(i, 2).Value, ii, 2)) Or Mid(Cells(i, 2).Value, ii, 2) = "." Then b = b & Mid(Cells(i, 2).Value, ii, 2) ElseIf b <> "" Then Cells(i, 2).Offset(, iii).Value = b b = "" iii = iii + 1 End If If iii = 3 Then Exit For Next ii Next i End Sub と訂正しましたところ、うまくいきませんでした。 どこが出来ていないのでしょう… お忙しい中申し訳ありませんが、ご指摘お願いします。
お礼
わぁ!出来ました。 重ね重ねご迷惑をおかけしました。 ありがとうございました。