
はじめまして。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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Visual Basic(VBA) データを製品別に集計 3 2022/09/11 21:17
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) EXCEL値貼り付け(ある条件のもと自動化) 5 2023/06/06 12:21
- Visual Basic(VBA) 列の最終行までのセルと1つ隣のセルの合計を別の列に表示 2 2022/07/12 19:50
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:VBAで月変わりで、自...
-
EXCELマクロで全シート対...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAで条件が一致する行のデータ...
-
機種変更時にデータは見られる?
-
PCから携帯に音楽をいれる件
-
microSDカードを読み込む
-
外付けHDDをフローリングに落と...
-
機種依存による移動の出来ない...
-
ソフトバンク706SC
-
パソコンの充電ができません。...
-
930SHにCDの音楽を取り込む方法...
-
I・O DATA外付けHD(HDCN-U500)...
-
携帯での音楽再生について
-
docomo SH702isでパソコンか...
-
ドコモの電話帳バックアップに...
-
ドメイン名が、ak.sky.tkk.ne.j...
-
今の携帯に入っている【着うた...
-
待受画面にアンテナが表記され...
-
携帯のまちうけ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロで空白セルを詰めて...
-
VBA:同じ文字列データの比...
-
Excel で行を指定回数だけコピ...
-
エクセル:VBAで月変わりで、自...
-
Excel VBA インデックスの境...
-
excelの差込印刷で可視セルだけ...
-
エクセルVBAで 2種のリストを...
-
EXCELマクロで全シート対...
-
エクセルVBAで SendKeys "{TAB}"
-
VBA別シートの最終行の下行へ貼...
-
エクセルVBA 別シートの複数の...
-
Excel VBAでシート内全体に非表...
-
エクセルVBAで実行時エラー...
-
Excel VBA元データから別シー...
-
VBA 最終行取得からの繰り返し貼付
-
vbaでコントロールブレイク
-
歯抜けの時間を埋めて行の挿入
-
VBAで複雑な構成の転記
-
VBAで条件が一致する行のデータ...
-
Excelマクロ データが上書きさ...
おすすめ情報