Excelの質問です。今「サンプルその1」というシートのG列にデータが入ってます。

  G列
2 (空白セル)
3 りんご
4 ● あいうえお
5 ● かきくけこ
6 ● さしすせそ
7 (空白セル)
8 (空白セル)
9 ごりら
10 ● あいうえお
11 ● かきくけこ
12 ● さしすせそ
13 ● たちつてと
14 ● なにぬねの
15 (空白セル)
16 (空白セル)
17 らっぱ
18 ● あいうえお
19 ● かきくけこ
20 ● さしすせそ
21 ● たちつてと
22 ● なにぬねの
23 ● はひふへほ
24 ● まみむめも
25 ● やゆよ

3行目に「りんご」、9行目に「ごりら」、17行目に「らっぱ」と入っております。あとは黒丸(●)+不規則な文字列が入ったセルです。
4行から6行目のセルの黒丸は「りんご」に。
10行目から14行目のセルの黒丸は「ごりら」に。
18行目から25行目のセルの黒丸は「らっぱ」に、変換したいのです。
変換したい文字列の直前の2行には必ず、空白セルが入る規則性がありますので、マクロや関数で何とか出来るのではないかと思いまして。
この処理を3000行ぐらいまで行いたいです。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/10/18 15:15:51
  • 終了:2014/10/25 13:59:40

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4558ベストアンサー獲得回数19032014/10/18 18:04:08

ポイント200pt

こんな感じでしょうか。

Const MAX_ROW = 3000    ' 処理対象の行数です。適当に大きくしてください。

Public Sub 黒丸置換()
    blank_count = 0
    For r = 1 To MAX_ROW
        Set c = Sheets("サンプルその1").Range("G" & r)
        If IsEmpty(c) Then
            blank_count = blank_count + 1
        Else
            If blank_count >= 2 Then
                word = c.Value
            Else
                c.Value = Replace(c.Value, "●", word)
            End If
            blank_count = 0
        End If
    Next
End Sub

上記のコードを、標準モジュールに貼り付けて、ボタンのマクロ登録するなどして、「黒丸置換」というサブルーチンを実行してください。

質問に書いてある内容以外に、勝手に想像したこと。

  • 空白セルが、ふたつ以上続いた次のセルの値を、置き換え文字として使うようにしました。
  • 空白セルが、ひとつだけのときは、前の置き換え文字を引き継ぎます。
  • が二つ以上入っていても、すべて置き換えます。
id:moon-fondu

わーすごいです!
うまく変換できました!!
ありがとうございます。

2014/10/18 23:29:46

その他の回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4558ベストアンサー獲得回数19032014/10/18 18:04:08ここでベストアンサー

ポイント200pt

こんな感じでしょうか。

Const MAX_ROW = 3000    ' 処理対象の行数です。適当に大きくしてください。

Public Sub 黒丸置換()
    blank_count = 0
    For r = 1 To MAX_ROW
        Set c = Sheets("サンプルその1").Range("G" & r)
        If IsEmpty(c) Then
            blank_count = blank_count + 1
        Else
            If blank_count >= 2 Then
                word = c.Value
            Else
                c.Value = Replace(c.Value, "●", word)
            End If
            blank_count = 0
        End If
    Next
End Sub

上記のコードを、標準モジュールに貼り付けて、ボタンのマクロ登録するなどして、「黒丸置換」というサブルーチンを実行してください。

質問に書いてある内容以外に、勝手に想像したこと。

  • 空白セルが、ふたつ以上続いた次のセルの値を、置き換え文字として使うようにしました。
  • 空白セルが、ひとつだけのときは、前の置き換え文字を引き継ぎます。
  • が二つ以上入っていても、すべて置き換えます。
id:moon-fondu

わーすごいです!
うまく変換できました!!
ありがとうございます。

2014/10/18 23:29:46
id:gong1971 No.2

gong1971回答回数443ベストアンサー獲得回数682014/10/18 20:12:32

ポイント100pt

オートフィルタで簡単に実現出来ます。
※念の為、バックアップを作成してお試しください。

1.他の列も含め、データ範囲を選択します。
 ※A1のセルを選択し、[Ctrl]+[Shift]+[End]とすると簡単です。
2.ホームリボンの[並べ替えとフィルタ]から
 [フィルタ]でオートフィルタを設定する。
3.G1のドロップダウンリストから、
 [テキストフィルタ][指定の値で始まる]をクリック。
4.左上の抽出条件に ● と入力し、[OK]をクリック。
5.例で言うと「● あいうえお」と入力されたセルG4を選択。
6.G4に次の数式 =G3 を入力する。※1つ上のセルを参照する数式です
7.G4のセルを[コピー]し、フィルタで抽出された範囲を選択し、
 [貼り付け]を行います。
8.ホームリボンの[並べ替えとフィルタ]から
 [クリア]でフィルタを解除する。

これで、ご要望の内容は実現できるかと思います。
ただ、このままでは数式のままなので、
必要であれば、下記の値貼り付けを行ってください。

9.G列を選択し[コピー]、ホームリボンの貼り付けの▼をクリックし、
 値貼り付けの[値](123と描かれたボタン)をクリック。

※Excel2010で回答を作成しました。
 別バージョンやMacintoshの場合で、
 表記が違う場合は、その旨をお知らせください。

id:gong1971

8.が記述ミスでした。下記が正しいです。
元の回答も修正しておきますね。


8.ホームリボンの[並べ替えとフィルタ]から
 [クリア]でフィルタを解除する。


8.ホームリボンの[並べ替えとフィルタ]から
 [フィルタ]でオートフィルタを設定する。

2014/10/19 00:44:32
id:moon-fondu

ありがとうございます、試してみます!

2014/10/25 13:49:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません