Excel97を使っています。
D列 K列 L列
2 ○○商事 鈴木太郎 100 150
3 ○○商事 田中一郎 250 50
4 ▲▲株式会社 150 100
5 ○○商事 小林花子 200 50
6 ▲▲株式会社 50 200
7 (株)○○商事 100 150
8 △△テクノロジー(株) 300 10
という表があります。
D列を丸めて、K列とL列の合計を出したいのですが、
どのようにしたらいいでしょうか?
D列を丸める際に、
例えば、2、3、5、7行目は丸めて、
D列に「○○商事 計」
K列に、650
K列に、400
と表示したいのです。
事前に並べ替えをしていても、上のように離れていたりしています。
また、実は上の内容をマクロでやりたいのですが、
そちらも解る方がいらっしゃれば教えて頂きたいです。
宜しくお願いします!
No.2ベストアンサー
- 回答日時:
例に掲げた内容を条件とすれば、次のようなコードで集計出来るかと思います。
確認の意味で書きますが、先頭に"(株)"が付いているものと付かない名前を同一とし、
スペース(半角&全角)の手前までを比較しています。
「計」に掲げる会社名は、比較部分の名称です。
一応、何回集計してもいいようにしています。
これで如何でしょうか。
Sub Syuukei()
Dim Rng As Range
Dim RngS As Range
Dim R As Range
Dim S As Range
Dim KName As String
For Each Rng In Range("D2", Range("D65536").End(xlUp))
If Right(Rng.Value, 2) = " 計" Then ' 既存集計値を消去
Rng.ClearContents
Rng.Offset(0, 7).Resize(1, 2).ClearContents
End If
Next Rng
Set Rng = Range("D2", Range("D65536").End(xlUp)) '会社名データ範囲
Set RngS = Rng.Offset(Rng.Rows.Count) ' 会社名集計記入エリア
For Each R In Rng
KName = R.Value
If InStr(R.Value, "(株)") = 1 Then KName = Mid(KName, 4)
'ここに先頭に"(有)"等の付く比較時に除くものがあれば上記同様に記述します。
KName = Left(KName, Len(KName) - InStr(KName, " "))
KName = Left(KName, Len(KName) - InStr(KName, " "))
Set S = RngS.Find(KName & " 計", lookat:=xlWhole)
If S Is Nothing Then
With Range("D65536").End(xlUp).Offset(1)
.Value = KName & " 計"
.Offset(, 7).Value = .Offset(, 7).Value + R.Offset(, 7).Value
.Offset(, 8).Value = .Offset(, 8).Value + R.Offset(, 8).Value
End With
Else
S.Offset(, 7).Value = S.Offset(, 7).Value + R.Offset(, 7).Value
S.Offset(, 8).Value = S.Offset(, 8).Value + R.Offset(, 8).Value
End If
Next R
Set Rng = Nothing
Set RngS = Nothing
End Sub
回答ありがとうございます!
何回でも使えるように配慮して頂いて
本当に嬉しいです!
残念ながら、まだ試せないでいますが、
本当にありがとうございました。
No.1
- 回答日時:
コンピュタは文字を頼りに処理をするのですよ。
特にエクセルはセルの文字列を1塊として考えます。
2,3、5、7を同一と判別できるのは、人間だからです。
初めから、会社と個人名を列を分けなかったのが設計の失敗です。
(1)会社名と個人名を別列に分けることを考えましょう。
多少は手作業補正が入るにしても。分けておけば結合は
簡単です。=A1&" "B1のように。
(2)それと前株はソートの邪魔になります。一旦前株を空白に置換える列を作っては。小生も数10年前から経験しましたが今もって良案なし。
会社と個人の分離、同一会社の表現の統一ができれば
あとはSUMIFやDSUM関数などで出来るでしょう。
●上記(1)(2)の処理にVBAは使えます。
しかし全体の処理に付いては、ここで書くほど簡単でないと思います。内容の状況に応じてコーディングしないといけない点が多々ありそうだからです。
●(1)(2)が済むと、ソートしてコントロールブレイクを利用して合計を出すと言う古典的方法をVBAで使えます。ロジックは簡単で基本情報処理技術者試験にでるレベルです。
回答ありがとうございます。
>コンピュタは文字を頼りに処理をするのですよ。
はい。存じております。
やっぱりそうですよねー。
ですが、何しろ、上司の指示なので、
何とか答えられたら、と思い、質問してみたんです(汗)
元のデータは、別の部署が社内のシステムダウンロードしたものを頂戴したらしいので
どうする事も出来ない様子。
システムへの入力はいろんな人が行っているので
バラついてしまうのではないかと思いますが。
アドバイスを参考に試行錯誤してみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) csvに別のExcelの文章を差し込む 2 2023/04/01 16:06
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Excel(エクセル) Excel での関数についての質問です。 例えばA列に商品名を、B列に個数をそれぞれ入力しています。 7 2023/05/13 10:51
- 会社経営 子会社の中で、完全子会社と子会社の違いを教えてください 完全子会社は100%出資で、子会社はそれ以外 2 2023/07/24 19:32
- 企画・マーケティング 売り切れ商法や行列商法はどれくらい効果があるのでしょうか? 売れ残っていても関係なく好きなものは欲し 2 2023/03/24 18:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
「B列が日曜の場合」C列に/...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
エクセル 同じ値を探して隣の...
-
Excel 別ファイルに自動的に反...
-
エクセルで一列おきに空白列を...
-
エクセル 時間帯の重複の有無
-
EXCELで 一桁の数値を二桁に
-
Excel、市から登録している住所...
-
Excel関数(通常はA列優先で、...
-
スマートな関数を教えて下さい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報