アプリ版:「スタンプのみでお礼する」機能のリリースについて

A列に8桁の数字が複数入力されています、行数は決まっていません。
左から6桁をB列へ、右から2桁をC列へ表示させます。

今行っているのは、B2セルに「=LEFT(A2, 6)」、C2セルに「=RIGHT(A2, 2)」を入れて
下までオートフィル。
後で別のシートにコピーするためにB・C列を値に変換しています。

VBAを使ったやり方も試してみたくなりご質問しました。

A列に数字が入力されている状態から、添付画像のようにB・C列に切り出したいです。

お詳しい方宜しくお願い致します。

「A列にある値をB列・C列にVBAで切り出」の質問画像

A 回答 (3件)

以下のようにしてください。


B,C列の書式設定を意図的に文字列にしてあります。

Public Sub B列C列設定()
Dim maxrow As Long
Dim wrow As Long
maxrow = Cells(Rows.count, "A").End(xlUp).row
Columns("B:B").NumberFormatLocal = "@"
Columns("C:C").NumberFormatLocal = "@"
For wrow = 2 To maxrow
Cells(wrow, "B").Value = Left(Cells(wrow, "A").Value, 6)
Cells(wrow, "C").Value = Right(Cells(wrow, "A").Value, 2)
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます、一番しっくりくる方法でした!

お礼日時:2022/04/10 09:19

おはようございます


>VBAを使ったやり方も試してみたくなりご質問しました。
関数、手作業で処理が上手く出来ているのなら、先ずマクロの自動記録を使って試してみましょう。
出来上がったコードを基に内容を検討するような考え方を持つのが好ましいと思います。

やり方は色々

過去質問などから推測し、ご質問者様自身で作成可能と思われる
ご質問の手順での自動記録マクロ 改

Sub Macro1()
'
'
Range("B2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1], 6)"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-2],2)"
Range("B2:C2").Select
Selection.AutoFill Destination:=Range("B2:C" & Cells(Rows.Count, "A").End(xlUp).Row), Type:=xlFillDefault
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub


シート関数使用、ループ、コピー処理無し
Sub test()
With Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
.Offset(, 1).Resize(, 2).NumberFormatLocal = "G/標準"
.Offset(, 1).Formula = "=Left(A1, 6)"
.Offset(, 2).Formula = "=Right(A1,2)"
.Offset(, 1).Resize(, 2).NumberFormatLocal = "@"
.Offset(, 1).Resize(, 2).Value = .Offset(, 1).Resize(, 2).Value
End With
End Sub
    • good
    • 2
この回答へのお礼

大変勉強になります!教えていただいたこと是非習慣づけたいと思います。
ありがとうございました!

お礼日時:2022/04/10 09:20

こういうのでいいのかな?



Sub samplre()
  Dim saigo As Long, i As Long
  saigo = Cells(Rows.Count, 1).End(xlUp).Row
  Debug.Print saigo
  For i = 2 To saigo
    Cells(i, 2) = Left(Cells(i, 1), 6)
    Cells(i, 3) = Right(Cells(i, 1), 2)
  Next
End Sub
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています