![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして。excelでこのようなデータが
あります。a列をidごとに集計して以下の結果のように
集計したいのです。集計しなくてもいい行はそのまま
出力します。関数でやってみましたがうまくいかないので
VBAにしたいです。データになにも入力されていないセルは
"."が入ります。関数でもVBAでもかまいませんので
よろしくお願いします。
データ
---------------------------
abcd
id11aa
.2fa
.3fa
4fa
id2124
id32..
----------------------------
結果
------------------------
abcd
id11234afffaaaa
id2124
id32..
------------------------
No.2ベストアンサー
- 回答日時:
よくわかりませんが、こういう事でいいんでしょうか。
Private Sub CommandButton1_Click()
Dim strArr(100, 3) As String
Dim sh As Worksheet
Set sh = Sheets("Sheet1")
Dim counter As Integer
counter = 0
Dim index As Integer
Dim i As Integer
For i = 0 To 100
Dim A_Value As String
A_Value = GetCellText(sh, i + 1, 1)
If A_Value = "" Then Exit For
If A_Value <> "." Then
strArr(counter, 0) = A_Value
index = counter
counter = counter + 1
End If
If index <> -1 Then
strArr(index, 1) = strArr(index, 1) & GetCellText(sh, i + 1, 2)
strArr(index, 2) = strArr(index, 2) & GetCellText(sh, i + 1, 3)
strArr(index, 3) = strArr(index, 3) & GetCellText(sh, i + 1, 4)
End If
Next
Set sh = Nothing
Dim sh2 As Worksheet
Set sh2 = Sheets("Sheet2")
Dim j As Integer
For j = 0 To 100
Dim A_Value_2 As String
Dim B_Value_2 As String
Dim C_Value_2 As String
Dim D_Value_2 As String
A_Value_2 = strArr(j, 0)
B_Value_2 = strArr(j, 1)
C_Value_2 = strArr(j, 2)
D_Value_2 = strArr(j, 3)
If A_Value_2 = "" Then Exit For
Call SetCellText(sh2, j + 1, 1, A_Value_2)
Call SetCellText(sh2, j + 1, 2, B_Value_2)
Call SetCellText(sh2, j + 1, 3, C_Value_2)
Call SetCellText(sh2, j + 1, 4, D_Value_2)
Next
Set sh2 = Nothing
End Sub
Private Function GetCellText(ByRef sh As Worksheet, ByVal rowIndex As Integer, ByVal colIndex As Integer) As String
Dim rng As Range
Set rng = sh.Cells(rowIndex, colIndex)
GetCellText = rng.Text
Set rng = Nothing
End Function
Private Sub SetCellText(ByRef sh As Worksheet, ByVal rowIndex As Integer, ByVal colIndex As Integer, ByVal value As String)
Dim rng As Range
Set rng = sh.Cells(rowIndex, colIndex)
rng.value = value
Set rng = Nothing
End Sub
No.1
- 回答日時:
言っていることは推測が付く。
しかしもう少し具体的(らしい)丁寧な例にして、イメージが直感できるよう、例を挙げてほしい。Idやa、b、cなどではなく。また列の位置がOKWAVEでは崩れて見辛くなるので、その点ご考慮を。
ーー
ID列ででソート。
直前(行)のキー(ID)と現在(行)を比較して
変わらなければ、計数列の計数を足しこみ
変われば合計を書き出し、合計を0にする。
総合計が必要なら、総合計に加えて、合計を0にする。
>集計しなくてもいい行はそのまま
これが具体的には良くわからない。
>データになにも入力されていないセルは"."が入ります
珍しい例だが、ピリオドが入るのですか。
であればそのセルは0を足す。
ーーー
SUBTOTAL関数というのがあるが、検討してみましたか。使えるかもしれない。
ピボットテーブルも使えるかもしれない、検討してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA インデックスの境...
-
Excel で行を指定回数だけコピ...
-
エクセルVBAで SendKeys "{TAB}"
-
excelの差込印刷で可視セルだけ...
-
VBA別シートの最終行の下行へ貼...
-
Excel VBA 複数条件にマッチし...
-
【WORD差し込み印刷】複数レコ...
-
エクセル2007で、マクロで、結...
-
VBA:同じ文字列データの比...
-
エクセル:VBAで月変わりで、自...
-
VBA 貼付先範囲(行)がいっぱ...
-
スマホ機種変更で旧機種のGoogl...
-
メールボックスがない時はどう...
-
添付ファイルが開けない
-
ドメイン名が、ak.sky.tkk.ne.j...
-
ドコモの電話帳バックアップに...
-
外付けHDDをフローリングに落と...
-
PC修理に出すのですが、個人情...
-
SH904iでiTunesの音楽を聴...
-
メールのコピーの仕方が分かり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
excelの差込印刷で可視セルだけ...
-
エクセルVBA 別シートの複数の...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
エクセル:VBAで月変わりで、自...
-
VBA別シートの最終行の下行へ貼...
-
エクセルVBAで 2種のリストを...
-
EXCELマクロで全シート対...
-
歯抜けの時間を埋めて行の挿入
-
エクセルVBAで SendKeys "{TAB}"
-
VBAで条件が一致する行のデータ...
-
Excel VBAでシート内全体に非表...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAで複数シート選択
-
Excelマクロ データが上書きさ...
-
Excel VBA 複数条件にマッチし...
-
VBAの処理が途中で止まる
-
VBAで複雑な構成の転記
-
エクセル2007で、マクロで、結...
おすすめ情報