誕生日にもらった意外なもの

おはようございます。

エクセルでちょっと解らないことが出来てましたので教えて頂けませんか?

画像のような表が有り、A1セルの最下段に特定の文字が入っています。

その中に特定の文字を見つけたら、表内のセルすべてにゼロを挿入したいと思います。

無ければスルーします。

現状で14万行ほどありますので、ボタンクリックのマクロでやりたいと思います。

詳しい方教えて頂けませんでしょうか、よろしくお願いいたします。

「エクセル マクロ 文字の判定と範囲 挿入」の質問画像

質問者からの補足コメント

  • 回答ありがとうございます

    14万行ちょっとあるので

    For i = 1 To 150000 と変更 し 文字を入れて実行してみましたが

    If Cells(GYOU, i).Value = "特定の文字" Then ここでエラーが出るようです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/05/01 11:55
  • 再度の回答ありがとうございます。

    Toは列でしたか、誤解していました。

    その部分は元に戻して、文字のみを挿入して試してみたのですが、動いてくれません><

    これは何が悪かったのでしょうか?

    お手数ですが、教えて頂けませんでしょうか。

    よろしくお願いいたします。

    ※ ちなみに、特定の文字を最終行から探して、【その表全て】 0に書き換えると言う事です。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/05/01 22:25
  • 回答ありがとうございます。

    A1~A8セルには全て文字が入っています。

    表の最下段、A8セルに 【 福岡ドーム 】を見つけたら 表内全て、A1~S8を0で埋めると言う事です。

    次の表も同じく最下段、A16が 【 福岡ドーム 】だったら、A9からS16を全て0で埋める。

    と言う事です。

    表の最下段が 福岡ドーム でなければスルーします。

    誤解しやすい表記をしてしまったようです、大変失礼しました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/05/02 18:13
  • 回答ありがとうございます。

    これで実行してみたいのですが、0にする範囲は、特定の文字の行も含み、A1~S7ではなく、A1~S8なのですが、どこを改変したら良いでしょうか?

    お手数ですが教えて頂けませんでしょうか。

    よろしくお願いいたします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2015/05/02 21:39

A 回答 (5件)

行い事が以下の通りか自信ないですが。


Sub ボタン1_Click()
GYOU = Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To 1000
If Cells(GYOU, i).Value = "特定の文字" Then
Range(Cells(9, i), Cells(GYOU - 1, i)).Value = 0
End If
Next
End Sub
この回答への補足あり
    • good
    • 0

>For i = 1 To 150000 と変更 し 文字を入れて実行してみましたが


は横列の最大列番号を入れてください。
右横方向に0を埋めながら進みます。

最後の行に 特定の文字 がある列が 0 になりますが良かったでしょうか。
最終行は、
GYOU = Range("A" & Rows.Count).End(xlUp).Row
で自動で取得しています。
この回答への補足あり
    • good
    • 0

>特定の文字を最終行から探して、【その表全て】 0


前の表には
最終行が 特定の文字だったら・・
この辺りは、どうしたいのか???
一例ですが、添付の表を利用して
空いているセル A1セルに =Countif(A9:S16,"特定の文字")
と入れておきます。
もし、A1セルの値が、1以上であれば、A6:S16を0にする
ということでしょうか?

Sub ボタン1_Click()
GYOU = Range("A" & Rows.Count).End(xlUp).Row
If Range(”A1").Value >0
Range(A9:S" & i).Value = 0
End If
End Sub
この回答への補足あり
    • good
    • 0

8行がひとつの表になっている。


A列の
8行目
16行目
24行目
・・
の確認しながら、福岡ドームなら
A1~S7
A9~S15
A16~S23の範囲を 0にする。

Sub ボタン1_Click()
For i = 8 To 15000 Step 8
If Range("A" & i).Value = "特定の文字" Then
Range(Cells(i-7, 1), Cells(i-1, 20)).Value = 0
End If
Next
End Sub

今度の Forは上から下へ移動します。
この回答への補足あり
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

Range(Cells(i-7, 1), Cells(i-1, 20)).Value = 0

がセル位置を表しているのですね。

Range(Cells(i-7, 1), Cells(i, 19)).Value = 0

とすることで解決しました。

教えて頂きありがとうございました。

お礼日時:2015/05/02 22:14

>A1~S7ではなく、A1~S8なのですが


Range(Cells(i-7, 1), Cells(i-1, 20)).Value = 0

Range(Cells(i-7, 1), Cells(i, 20)).Value = 0
では如何でしょうか。
この式の意味は理解してください。
iは変数で
8
16
24
と8飛びで繰り返される変数です。
    • good
    • 1

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