• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:空白セルの削除と重複データの加算のマクロ)

マクロを使って空白セルの削除と重複データの加算を実行する方法

このQ&Aのポイント
  • シート1の文字列のデータの0又は空白のセルを取り除き、重複しているデータは左端の数を加算して別のシート2のC10からC100のセルに抽出するマクロを作成します。
  • データの並び方はそのままで、重複するデータの加算と空白のセルの削除を一度のマクロで実行できます。
  • シート2のB列10~100に抽出されるデータは、空白セルが削除された後のデータであり、重複データは加算されて表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

下記で試してください。 元データのセル番地、貼り付け先のセル番地等は実際に合わせて書き直してください。 Dim rng As Range Dim c As Range Dim rngc As Range Dim txt1 As String Dim txt2 As String Dim ttal As Variant Application.ScreenUpdating = False With Sheets("シート1") Set rng = .Range("A1", .Range("A" & Rows.count).End(xlUp)) End With For Each c In rng If c.value = "" Or c.value = "0" Then c.ClearContents End If Next rng.SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp rng.Copy Sheets("シート2").Range("C10") With Sheets("シート2") Set rng = .Range("C10", .Range("C" & Rows.count).End(xlUp)) End With For Each c In rng If rngc Is Nothing Then txt1 = Left(c.value, InStrRev(c.value, "-")) ttal = Val(Split(c.value, "-")(2)) Set rngc = c Else txt2 = Left(c.value, InStrRev(c.value, "-")) If txt1 = txt2 Then ttal = ttal + Val(Split(c.value, "-")(2)) rngc.value = txt1 & ttal c.ClearContents Else txt1 = Left(c.value, InStrRev(c.value, "-")) ttal = Val(Split(c.value, "-")(2)) Set rngc = c End If End If Next rng.SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp Application.ScreenUpdating = True

sewneedles
質問者

補足

未熟な質問にお答えを頂き有難うございました。 思ったとおりにマクロが実行出来ました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

  もっと質問の内容を丁寧に書いてほしい。 たいした内容ではないようだが、言ってていることが判りにくい。 エクセルはシート、列、行、セルのデータ内容などに関する扱いなのだ。 質問する場合では、これらをくどいぐらい記述するべきだ。 エクセルのバージョンも念のため書いておくクセをつけること。 ーー 質問例では、1つの列のデータのようだが、はっきりしない。 1つの列なら、例えばA列ならA列と書け。 行の削除は、要領としては 最終行から上に条件を判別すれば仕舞いだろう。For Next のStep -1利用。 ーー 条件は (1)文字列の0(ほんとに文字列か) (2)空白か どちらかに該当すば、これをデータ全行について、IF分で判別したら仕舞いであろう。 そして該当すれば行削除。 ーー >並んでいる文字列の左と真ん中の数が 「セル」の並びにことか。セルの左隣ノのことか?と真中とは? この意味わからない。 行的に直前、直後の行か? 例でも挙げて、文章で説明を加えよ。 >左端の数を加算して 左端とは?直前で言っている「左の」セル?A列?A列は数字じゃないよね? >データーの0は関数で空白にしたいと思っています。 どういう意味?その行は削除するのではないのか? >データの並び方はこのままで重複するデーターの加算と空白のセルの削除を一回 質問者は初心者だろうから、2ステップを分けてコード記述したらどうか。 (1)空白の列削除 (2)重複するデータの削除 ここは目的を総括したのだろうが、ここまでに「重複」の話は出てきていないのでは?突然ではないか。 まだVBAをやれるような文章の表現力が付いてないと思う。 書き直してはどうか。

関連するQ&A

専門家に質問してみよう