以前質問し、マクロを作って頂いたのですが、行と列を挿入しなくてはならなくなり、マクロが機能しなくなってしまいました。
●以前の質問●
セルA1:カベシタジゴウハン 9X 50X1800 D9
セルA2:ウケゴウハン T5.5 40X 300 U7
セルA3:ゴウハンK 2.5X 60X 80 スペーサー
セルA4:ランバP *412X3547 W2
セルA5:VSF K 12.5X 47X 869 LE
セルA6:VSF J*12X 68X2395 Wメン WX
とシートに入っているとします。これを、
セルB1:9 セルC1:50 セルD1:1800
セルB2:5.5 セルC2:40 セルD2:300
セルB3:2.5 セルC3:60 セルD3:80
セルB4:空白 セルC4:412 セルD4:3547
セルB5:12.5 セルC5:47 セルD5:869
セルB6:12 セルC6:68 セルD6:2395
と入るように関数を使うにはどうしたら良いでしょうか。
マクロでも構いません。
●採用させて頂いた回答●
Sub test()
Dim i, ii, iii
Dim a As String
For i = 1 To Range("a65536").End(xlUp).Row
a = ""
iii = 0
For ii = 1 To Len(Cells(i, 1).Value)
If IsNumeric(Mid(Cells(i, 1).Value, ii, 1)) Or Mid(Cells(i, 1).Value, ii, 1) = "." Then
a = a & Mid(Cells(i, 1).Value, ii, 1)
ElseIf a <> "" Then
Cells(i, 2).Offset(, iii).Value = a
a = ""
iii = iii + 1
End If
If iii = 3 Then Exit For
Next ii
Next i
End Sub
●今回セルが変わりました●
セルB2:カベシタジゴウハン 9X 50X1800 D9
セルB3:ウケゴウハン T5.5 40X 300 U7
セルB4:ゴウハンK 2.5X 60X 80 スペーサー
セルB5:VSF K 12.5X 47X 869 LE
セルB6:VSF J*12X 68X2395 Wメン WX
とシートに入っています。これを、
セルC2:9 セルD2:50 セルE2:1800
セルC3:5.5 セルD3:40 セルE3:300
セルC4:2.5 セルD4:60 セルE4:80
セルC5:12.5 セルD5:47 セルE5:869
セルC6:12 セルD6:68 セルE6:2395
このように入るようにしたいのです。
以前採用させて頂いたマクロを修正したいのですが、どうも自分では失敗してしまいます。
お力をお貸し頂ければ幸いです。
No.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ヘルプを参照~
No.1
- 回答日時:
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
と訂正しましたところ、うまくいきませんでした。
どこが出来ていないのでしょう…
お忙しい中申し訳ありませんが、ご指摘お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) セルS2に入力した「月」と一致したB列の右隣へセルS110の値を転記する下記マクロを実行するとエラー 2 2022/12/06 17:32
- Excel(エクセル) なぜか正常にマクロが動いていない? 1 2022/11/03 07:56
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) ※初心者です マクロVBAについて 3 2022/11/05 12:53
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
貼り付けで複数セルに貼り付けたい
-
エクセルのセルの枠を超えて文...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
Excelで数式内の文字色を一部だ...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
エクセルvba (ByVal Targ...
-
枠に収まらない文字を非表示に...
-
excelのCOUNTIF関数で、『範囲=...
-
Excel2003 の『コメント』の編...
-
excelの特定のセルの隣のセル指...
-
Excelの関数で、性別が男なら『...
-
excelで検索値の入っているセル...
-
エクセルで作成したカレンダー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報