[[20150514144526]] 『セル内の文字列を検索し、抽出した部分のみを別の』(もか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セル内の文字列を検索し、抽出した部分のみを別のセルの指定部分に表示させるには』(もか)

はじめましてよろしくお願いします。
以下のような表で、C列内の“//”を検索し、“//”から後の内容を自動的にひとつ前の行のA列の中に表示させたいです。
ただし、C列には、“//”が付いた文章が、1行だったり、“//”のついた文章が無かったり、または“//”付きの文章が3行や4行あるときもあります。
その“//”付きの行のみを、Cで表示されていた“//”を取り除いた状態で元セルに表示されていた順番通りにA列の一つ前の行のセル内に改行をつけて表示したいです。

なにか良い方法があればご教示いただけますと幸いです。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

   A列      				B列     	C列
1行  One good turn deserves another.	(空白)(空白)
2行 (空白)				日付	Today's word
						//One good turn deserves another.
3行 (別の文章が入ったり、空白だったりします)
4行 (別の文章が入ったり、空白だったりします)
5行 (別の文章が入ったり、空白だったりします)
6行 (別の文章が入ったり、空白だったりします)
7行  Prevention is better than cure.	(空白)(空白)
    make sure!!
8行 (空白)				日付	Today's word
						//Prevention is better than cure.
						//make sure!!
9行 (別の文章が入ったり、空白だったりします)
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

< 使用 Excel:Excel2010、使用 OS:Windows7 >


こんにちは

地道に処理する方法で、

Sub test()

    Dim r   As Range
    Dim i   As Long
    Dim v   As Variant
    Application.ScreenUpdating = False
    On Error Resume Next
    For Each r In Range("C:C").SpecialCells(xlCellTypeConstants)
        If InStr(1, r.Value, "//") > 0 Then
            v = Split(r.Value, vbLf)
            For i = 0 To UBound(v)
                If v(i) Like "//*" Then
                    If r.Offset(-1, -2).Value = "" Then
                        r.Offset(-1, -2).Value = Mid(v(i), 3, Len(v(i)))
                    Else
                        r.Offset(-1, -2).Value = _
                            r.Offset(-1, -2).Value & vbLf & Mid(v(i), 3, Len(v(i)))
                    End If
                End If
            Next
        End If
    Next
    On Error GoTo 0
    Application.ScreenUpdating = True
End Sub

(ウッシ) 2015/05/14(木) 15:31


ウッシさま

ご返答ありがとうございました。
For Each r In Range("C:C") ここを実際の抜き出しデータ部分のH列
For Each r In Range("H:H") に書き換えをして動かしてみたのですが、
うまく動きませんでした。

他に変えなければいけないところはありますか?
(もか) 2015/05/14(木) 16:13


こんにちは

Range("H:H").SpecialCells(xlCellTypeConstants)

とすればH列のデータの入っているセルだけ処理します。

r.Offset(-1, -2)の部分でA列1つ上のセルを指定しているのでH列なら
A列に書き出す場合は、r.Offset(-1, -7)にする必要が有ります。

提示された状態で動くかまず確かめましたか?

どうせなら最初から本番データのフォーマットを説明すればいいのに・・・

On Error Resume Next

を削除すればエラー表示されますので試してエラーの内容を提示してみて下さい。

(ウッシ) 2015/05/14(木) 16:22


ウッシさま

いただいた内容で動かしてみたら動きました。
ご回答どうもありがとうございました。

(もか) 2015/05/14(木) 16:39


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.