Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13336 / 13646 ツリー ←次へ | 前へ→

【5812】特定文字の削除 pino 03/6/2(月) 14:21 質問
【5813】Re:特定文字の削除 Jaka 03/6/2(月) 15:51 回答
【5833】Re:特定文字の削除 pino 03/6/3(火) 9:11 質問
【5852】Re:特定文字の削除 Jaka 03/6/3(火) 14:58 回答
【5857】Re:特定文字の削除 pino 03/6/3(火) 17:57 質問
【5859】Re:特定文字の削除 こうちゃん 03/6/4(水) 8:32 回答
【5861】Re:特定文字の削除 ひで 03/6/4(水) 13:18 回答
【5866】Re:特定文字の削除 pino 03/6/4(水) 17:07 お礼

【5812】特定文字の削除
質問  pino  - 03/6/2(月) 14:21 -

引用なし
パスワード
   お世話になります。

ある売上データからグラフを作るマクロを組んでいるのですが、
そのデータの中にある商品の発売月までセルにある文字の0(ゼロ)を
空白にしたいのです。
商品の発売月が一定ではなくバラバラになっています。
発売月までのセルにはゼロが入ってあったり、空白だったりと
統一性はありません。
発売月以降の売上がゼロの月もあるが、発売以降のゼロは消したくありません。

例)
|  | 5月 | 6月 | 7月 | 8月|・・・
| A | 0 | 0 | 10 | 14 |・・・
| B |   |   | 5 | 7 |・・・
| C |   | 0 | 0 | 12 |・・・

商品Aは5月と6月の0を削除。7月以降はそのまま。
商品Bは5月と6月の空白のままにしておく。
商品Cは5月の空白はそのままで6月と7月の0を削除8月以降はそのまま。

こんな感じにしたいと思っています。
説明が下手で分かりにくいかも知れませんが、
宜しくお願いいたします。

【5813】Re:特定文字の削除
回答  Jaka  - 03/6/2(月) 15:51 -

引用なし
パスワード
   こんにちは。

範囲が解っているなら、例えばこんなのとか...。

Dim Myrang As Range
Set Myrang = Range("A1:B7")
Myrang = Application.Substitute(Myrang, "0", "")
Set Myrang = Nothing

【5833】Re:特定文字の削除
質問  pino  - 03/6/3(火) 9:11 -

引用なし
パスワード
   返答有難うございます。

範囲が分かっていればの回答ですが、
範囲は分かっていません。
月々で変動してしまうのです。
発売してから月日が経ってしまっているんもあれば
今月発売になったのも等いろいろあるからです。
発売前にゼロが入ってあるものと
ないものではグラフに影響が出てしまうのです。
宜しくお願いいたします。

【5852】Re:特定文字の削除
回答  Jaka  - 03/6/3(火) 14:58 -

引用なし
パスワード
   こんな風にループさせる方法しか思いつきませんでした。
提示されたデータですと、こんな感じでしょうか?

Sub aji()
  Dim Ur As Range, tt As Integer
  Co = 2
  tt = 8
  Do Until Val(Cells(1, Co).Value) = tt
    For i = 2 To 4
     If Cells(i, Co).Value = "0" And _
       ((Val(Cells(1, Co).Value) <= tt - 2 And Cells(i, 1).Value < "C") Or _
       (Val(Cells(1, Co).Value) <= tt - 1 And Cells(i, 1).Value = "C")) Then
       If Ur Is Nothing Then
        Set Ur = Cells(i, Co)
       Else
        Set Ur = Union(Ur, Cells(i, Co))
       End If
     End If
    Next
    Co = Co + 1
  Loop
  Ur.Select      '一応セレクトしてみました。
  'Ur.ClearContents  '合っていたらこっちを有効にして下さい。
  Set Ur = Nothing
End Sub

【5857】Re:特定文字の削除
質問  pino  - 03/6/3(火) 17:57 -

引用なし
パスワード
   Jaka さん返答有難うございます。

返答のような感じだと12月の次が1月になってしまうと
エラーになってしまいます。
又、発売以降のゼロまで選ばれてしまいます。
上記の意味は、
発売月が5月だとすると6月は10売れたとしても
7月はぜんぜん売れなくてゼロになってしまう。
8月からは順調にまた売れ出す。ってことです。
分かりにくいかも知れませんが
宜しくお願いいたします。

【5859】Re:特定文字の削除
回答  こうちゃん E-MAIL  - 03/6/4(水) 8:32 -

引用なし
パスワード
   pinoさん、Jakaさん、こんにちは

こんな感じでいかがです?

Sub test()
  Dim i As Long
  Dim j As Integer
  For i = 2 To Range("A65536").End(xlUp).Row
    For j = 2 To Range(Cells(i, 256), Cells(i, 256)).End(xlToLeft).Column
      If Cells(i, j).Value > 1 Then
        Exit For
      ElseIf Cells(i, j).Value = "0" Then
        Cells(i, j).ClearContents
      End If
    Next
  Next
End Sub

【5861】Re:特定文字の削除
回答  ひで  - 03/6/4(水) 13:18 -

引用なし
パスワード
   ▼こうちゃん pinoさん、Jakaさん、こんにちは

素人コードで恐縮ですが・・

pinoさんが望んでるのは
もしかしたらこんな感じじゃないかな〜?

Sub 置き換え()

Dim i As Long, N As Long, r As Long, f As Long

i = 2
N = Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Row

For r = 2 To N
  For f = 2 To 13 '12ヶ月間だとして

If Cells(r, i) > 0 Then
  Exit For
  Else

If Cells(r, i + 1) > 0 Then
  Cells(r, i) = ""
  Exit For
Else
Cells(r, i) = ""
i = i + 1
End If
End If

Next
i = 2
Next

End Sub

【5866】Re:特定文字の削除
お礼  pino  - 03/6/4(水) 17:07 -

引用なし
パスワード
   Jakaさん,こうちゃん,ひでさん
アドバイス頂き有り難うございます。
無事完成する事が出来ました。
こうちゃんのマクロを参考にさせて頂きました。
みなさんのお力添えなくしては
まだまだ一人で壁を乗り越える事が出来ませんが
これからも宜しくお願いいたします。

13336 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free