VBAの初心者で教えて頂きたいのですが、
ランダムに読み込んだ文字列が重複していた場合、その右にあるセルの値を合算したいのですが、できますでしょうか。
イメージとしては(なんとなくで申し訳ないです)、
Do
If "範囲" "文字列"="文字列"ならば
右のセルを合算
+
重複した"文字列"を一つにする。
それを重複する文字列がなくなるまで繰り返す。
Loop
といった感じになると思うのですが、VBAですとどのようなプログラムになるでしょうか。
ご教授願います。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
>関数だとSUMIFやVLOOKUPを使えば何とかできそうなのはわかりますが、VBAだと>どのようなコードになるのかなぁという質問でした。
関数を、VBAで表現したらどうなるか、ということは、大事なことだと思うのです。
でもね、私が言うのもなんですが、それには段階を踏んで覚える部分とかあるわけで、最初から解答をみて、どうするのか、と思うのです。
関数の表現をVBAでしようというのは、ピンからキリまであります。初級段階から上級、また最上級と段階があります。もちろん、最終的には、C言語や他の言語で作る所まで行くわけですが、その最初の初級段階が分かりませんから、教えてください、というように読めますが、それは、ちょっと意味が違うと思うのです。
私の見た人の中では、3ヶ月でVBAを一通り覚えてしまった人や、約2年でVBAの業界のトップまで(プロ)上り詰めてしまった人などもいれば、10年経っても、毎日、VBAに携わっても、一向に、相変わらず初級を越えない人もいます。そういう私は、一通り使えるまでには3年掛かってしまいました。直接、誰かに教わったわけではありません。
やはり、そういう私が思うのは、最初は良いテキストを手に入れることです。
次に、一定の期間(だいたい3ヶ月)を我慢して、分からない所は分からないままに、最後までむらなくテキスト終えることです。そして、数多くの問題を手掛けることと、新しいことに気後れしないようにすることではないでしょうか。
残念なことに、VBAのいくつかの外部オブジェクトを知る手立てはなくなってしまいましたが、その時は、専門掲示板でお尋ねになればよいと思います。
----------------------
>Do
>If "範囲" "文字列"="文字列"ならば
>右のセルを合算 ? (具体的に)
>+
>重複した"文字列"を一つにする。×
>
>それを重複する文字列がなくなるまで繰り返す。×
>Loop
-----------------------
×の理由
重複した"文字列"を一つにする。--入門レベルでは、かなり難しいです。
それを重複する文字列がなくなるまで繰り返す。--その先に重複があるかどうかは、分かりません。COUNTIFでも用いれば別ですが、その必要性はないと思います。データの最後まで検査すればよいだけです。
SUMIF の考え方は分かりますか?
<ワークしシート> A1:B11まで
--------------
Name Amount
a 50
c 80
b 40
a 100
c 60
b 90
a 70
c 60
d 70
a 10
----------
=SUMIF(範囲,検索条件,合計範囲)
=SUMIF($A$2:$A$11,"a",$B$2:$B$11)
範囲は固定です。検索条件にひとつの入れ物、「a」を設けてあげて、ひとつづつ、調べていくわけです。dは、合計
For i = 1 To 10
If Cells(i + 1, 1) = "a" Then
d = d + Cells(i + 1, 2)
End If
Next
Cells(1, 3).Value = "a"
Cells(1, 4).Value = d
中級クラスになると、まったく違う方法が出てきたりします。
回答ありがとうございます。
全く持って回答者様の言う通りだと思います。
段階を踏まず解答を見てそのままやると成長は何もしないと思います。
一応Sumifを使用して色々工夫したところ自分のやりたいプログラムは書けましたのでありがとうございます。
すごく詳細に回答をしてくださり大変感謝しております。ありがとうございました。
また、今後共わからないことがありましたら少しでもいいのでヒントを頂ければと思います。
少しずつ覚えていこうと思います。
No.1
- 回答日時:
こんにちは
おおまかにはご提示の方法で処理できると思いますので、そのままコード化してみるのが宜しいかと思います。
その上で、わからないことが出てきたらば、その点についてご質問なされば、具体的に質問できると思いますので、より適切な回答が得られることでしょう。
処理対象のデータ量にもよりますが、ご提示の方法ですと、文字列の比較を、常に『残っている全部のデータ』と比較することになりますので、必ずしも効率が良いとは言えません。(データ数が少なければどうという事でもありませんが)
最初に、比較する文字列をキーにして並べ替え(Sort)を行っておくと、順に参照していって異なるデータが出てきたら、そこまでを纏めれば良いと考えられますので、比較の対象が少なくて済むので効率的になると思います。
大雑把に比較処理の回数を考えてみると、前者では、データ数から2個の組合せを取り出す回数に近く、後者では、ほぼデータ数分の回数となりますので、2乗で効いてくることになります。
(正確には、並べ替えの処理で同じようなことを行っているので、その分の時間はかかっているはずなのですが、VBAでの処理とSortメソッドの処理速度は格段に違いますので…)
文字列の比較が単純な比較で良い場合は問題ありませんが、「含まれるキーワードが同じ」というような単純な文字列比較ではない場合には、エクセルではそのままではうまくソートできませんので、若干の工夫が必要になるかも知れません。
例えば、上記の場合であれば、前処理として各文字列からキーワードを抜き出しておいて、並べ替えはそのキーワードをキーとして行うなどといったアレンジが必要かもということです。
回答ありがとうございます!
ただ、そのコードがわからなくて苦戦しておりまして…。
なんとなくは書いてはいるのですが、理解していないためコードそのものがぐじゃぐじゃの機能しないもので…。
ですが、なんとかやってみます。
ありがとうございます。
関数だとSUMIFやVLOOKUPを使えば何とかできそうなのはわかりますが、VBAだとどのようなコードになるのかなぁという質問でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ITの見積もりってなんであんな...
-
YahooのIDがロックされてしまい...
-
「.movpkg」「.m3u8」ファイル...
-
Winrarの移行
-
グーグルクロムにダウンロード...
-
パソコンでJPEG画像ファイルを...
-
ティラノビルダーProというゲー...
-
ゆうちょ認証アプリが使えません
-
jtrim 1.53cが正常な動きをし...
-
Emacsメニューの日本語化について
-
ペイントで切り抜いた画像の背...
-
ソフトが異常終了します
-
RoboFormについて
-
エクセルなどで自分専用の辞書...
-
新バージョンPDFでのスナップシ...
-
パソコンソフトのシリアルナンバー
-
iTunesでCD作成しています。 書...
-
Windows11のエクスプローラーで...
-
音楽CD 拡張子 CDA なのに再生...
-
mp3 ファイルをCDに焼く無料ソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
YahooのIDがロックされてしまい...
-
「.movpkg」「.m3u8」ファイル...
-
ゆうちょ認証アプリが使えません
-
サポートの終了したソフトから...
-
Windows Media PlayerでCDが焼...
-
STEAM版BF4が起動しない
-
クリスタルディスクインフォは...
-
ATOKをお使いの方、今後もVer U...
-
CMYKのペイントソフトを探して...
-
アドビの値上げについて
-
Bluerayディスクのオーサリング...
-
jtrim 1.53cが正常な動きをし...
-
住所もしくは緯度経度で道のり...
-
自分で描いた下手な絵を綺麗に...
-
googleスプレッドシートのキャ...
-
新バージョンPDFでのスナップシ...
-
i Tune でCDからハードディスク...
-
先日からDigiBestTVで「デバイ...
-
Winrarの移行
-
gimpで文字の細工をしたい
おすすめ情報