
はじめまして。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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】並び替えの範囲が、...
-
VBAの「To」という語句について
-
vbsでのwebフォームへの入力制限?
-
Vba セルの4辺について罫線が有...
-
【マクロ】変数を使った、文字...
-
Vba FileSystemObject オブジェ...
-
エクセルのマクロについて教え...
-
VBAでユーザーフォームを指定回...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】シートの変数へ入れ...
-
エクセルのVBAコードと数式につ...
-
ワードの図形にマクロを登録で...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
【マクロ】モジュール変数の記...
-
Excelのマクロについて教えてく...
-
ダブルクリックで貼り付けた画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロで空白セルを詰めて...
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
excelの差込印刷で可視セルだけ...
-
エクセル:VBAで月変わりで、自...
-
VBAで条件が一致する行のデータ...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAでのシートの色が
-
複数ブックの複数セルの抽出教...
-
エクセルVBAで 2種のリストを...
-
【WORD差し込み印刷】複数レコ...
-
別シートから検索値に一致した...
-
Excelマクロ データが上書きさ...
-
ExcelVBA、印刷ページを事前に...
-
VBA別シートの最終行の下行へ貼...
-
エクセルでデータの検索
-
Excel VBAでシート内全体に非表...
-
[EXCEL]全てのチェックボックス...
-
VBA 最終行取得からの繰り返し貼付
おすすめ情報