ここから本文です

エクセルで以下のコードを実行するとA列に入力された値に対して結果が表示されま...

to8********さん

2016/11/116:50:21

エクセルで以下のコードを実行するとA列に入力された値に対して結果が表示されます。
別の列の値を対象にしたい場合(たとえばB列)の方法をご教授ください。

Private Sub SplitData(ByVal s As String, ByVal r As Integer)
'引数sを空白で分割して、各数字をセルに代入
'引数rは、セルの行番号

Dim Data As String
'行頭行末のスペースを削除
Data = Trim(s)
'スペースの数を一つに統一(置換を使う)
Data = Replace(Data, " ", " ")
Dim tmp() As String
'Split関数を使ってスペース区切りで値を配列に格納
tmp = Split(Data, " ")

Dim i As Integer
'配列の要素数だけ繰り返し
For i = 0 To UBound(tmp)
'配列のi番目の値をセルに代入
Cells(r, i + 2).Value = tmp(i)
Next

End Sub


Public Sub Main()
'1行目から最終行までのデータを繰り返し処理

Dim i As Integer
Dim LastRow As Integer
LastRow = Range("A65536").End(xlUp).Row

For i = 1 To LastRow
'1行ごとにサブルーチンを呼び出す
Call SplitData(Range("A" & i).Value, i)
Next
End Sub

結果

投稿画像

閲覧数:
90
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2016/11/117:19:41

Public Sub Main()
'1行目から最終行までのデータを繰り返し処理

Dim i As Integer
Dim LastRow As Integer
LastRow = Range("A65536").End(xlUp).Row

For i = 1 To LastRow
'1行ごとにサブルーチンを呼び出す
Call SplitData(Range("A" & i).Value, i)
Next
End Sub



Public Sub Main()
'1行目から最終行までのデータを繰り返し処理

Dim i As Integer
Dim LastRow As Integer
Const xCol As String = "B"
LastRow = Range(xCol & Rows.Count).End(xlUp).Row

For i = 1 To LastRow
'1行ごとにサブルーチンを呼び出す
Call SplitData(Range(xCol & i).Value, i)
Next
End Sub

  • tra********さん

    2016/11/117:33:19

    ↓のようなコードのほうが速いでしょう。

    Sub sample()
    Dim rng As Range
    Application.ScreenUpdating = False
    With Range("B" & 1, Cells(Rows.Count, "B").End(xlUp))
    For Each rng In .Cells
    With rng
    .Value = Trim(.Value)
    End With
    Next rng
    .TextToColumns Destination:=.Offset(, 1), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=True, Other:=False, TrailingMinusNumbers:=True
    End With
    Application.ScreenUpdating = True
    End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/11/1 19:13:08

大変ありがとうございます。
処理の速いコードまでご教授いただきまして、本当に助かりました。

あわせて知りたい

このカテゴリの投票受付中の質問

一覧を見る

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる