C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: エクセルのVBAにてデータを整理したい


(過去ログ 93 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■55360 / inTopicNo.1)  エクセルのVBAにてデータを整理したい
  
□投稿者/ りぃ (1回)-(2010/11/28(Sun) 10:07:46)

分類:[VB.NET/VB2005 以降] 

こんにちは、お世話になります。

エクセル(2007)で

1.同じ列で、セルとほかのセルで名前が似ているものを検出することはできますか?
2.VBAで行を削除するコマンドは存在しますか?
3.1つの列をソートするのに1000行ほどある場合は処理が重たくなることはありますか?

質問は以上の3つです。
よろしく願い致します。

(環境はWindows7,Excel2007です)



引用返信 編集キー/
■55363 / inTopicNo.2)  Re[1]: エクセルのVBAにてデータを整理したい
□投稿者/ よねKEN (643回)-(2010/11/28(Sun) 13:06:06)
No55360 (りぃ さん) に返信
> 1.同じ列で、セルとほかのセルで名前が似ているものを検出することはできますか?

「似ている」のルール(仕様)を明確化し、そのルール通りに実装すれば検出できるでしょう。

> 2.VBAで行を削除するコマンドは存在しますか?

あります。「VBA 行 削除」で検索すれば方法もわかります。

> 3.1つの列をソートするのに1000行ほどある場合は処理が重たくなることはありますか?

PCのスペックとプログラムの組み方次第です。
具体的にどんなスペックでどんなプログラムだとどうなるかは計測しなければわかりません。

引用返信 編集キー/
■55373 / inTopicNo.3)  Re[1]: エクセルのVBAにてデータを整理したい
□投稿者/ shu (210回)-(2010/11/28(Sun) 21:22:16)
No55360 (りぃ さん) に返信

エクセルのVBAでプログラムする場合、マクロの記録が結構役に立ちます。
例えば
マクロの記録を開始して行の削除を行うと

Rows("9:9").Select
Selection.Delete Shift:=xlUp

こういうVBAプログラムが出来上がります。
ここでRows("9:9").Selectと
次の行のSelectionに注目して
Rows("9:9").Delete Shift:=xlUp
と置き換えることが出来ることを覚えておくとよいかと思います。

引用返信 編集キー/
■55434 / inTopicNo.4)  Re[2]: エクセルのVBAにてデータを整理したい
□投稿者/ りぃ (2回)-(2010/12/02(Thu) 05:51:33)
お返事遅くなりまして申し訳ございません。
りぃです。お返事ありがとうございます。

実は、電話帳を整理していて、電話番号のところで躓いています。
1.セルに入れた電話番号からハイフン(−)を取り除いて、
2.COUNTIF文で重複をチェックして、
3.1000行ほどの電話番号と人の名前を整理しています。

1.に関してVBAでハイフンを取り除くにはどうしたらよいでしょうか?
2.に関してCOUNTIFよりも速度の速い関数はありますか?
3.に関してCOUNTIFを使って1000行は重たくなるでしょうか?

使用しているエクセルはExcel2007です。
よろしくお願いいたします。
引用返信 編集キー/
■55435 / inTopicNo.5)  Re[3]: エクセルのVBAにてデータを整理したい
□投稿者/ ごう (206回)-(2010/12/02(Thu) 09:00:12)
No55434 (りぃ さん) に返信

> 1.に関してVBAでハイフンを取り除くにはどうしたらよいでしょうか?

ご自分で「文字列を引数として渡し、数字のみを返す」関数を作る必要があると思います。
関数の作り方はわかりますか?

> 2.に関してCOUNTIFよりも速度の速い関数はありますか?
> 3.に関してCOUNTIFを使って1000行は重たくなるでしょうか?

貴殿の希望の処理時間(1000行を何秒以内で処理したいか?)がわからないのでなんともいえませんが
まず、試してみて遅すぎるor問題ないを判断してみてはいかがでしょうか。
引用返信 編集キー/
■55451 / inTopicNo.6)  Re[3]: エクセルのVBAにてデータを整理したい
□投稿者/ shu (213回)-(2010/12/02(Thu) 16:26:51)
No55434 (りぃ さん) に返信
> 1.に関してVBAでハイフンを取り除くにはどうしたらよいでしょうか?
VBAならReplace
 Replace("ab-c","-","") => abc

シート関数ならSUBSTITUTE
A1の内容:aaa-bbb
=SUBSTITUTE(A1,"-","") => aaabbb

を使用すればハイフンを空文字に変換出来ます。
引用返信 編集キー/
■55524 / inTopicNo.7)  Re[4]: エクセルのVBAにてデータを整理したい
□投稿者/ りぃ (3回)-(2010/12/05(Sun) 14:47:10)
No55451 (shu さん) に返信

お返事遅くなりまして申し訳御座いません。

Replace関数は私のエクセル(2007)では対応していませんでした。
(正確には、関数の型が違っていたようです)

しかし、SUBSTITUTE関数ではうまくいきました。
ありがとうございます。

目標としては、VBA上でハイフンを取り除けばよいのですが、
いくつサイトを見てもそのような関数は存在しないようなので、
ここでピリオドにしたいと思います。

どうもありがとうございました。

引用返信 編集キー/
■55525 / inTopicNo.8)  Re[5]: エクセルのVBAにてデータを整理したい
□投稿者/ 魔界の仮面弁士 (1973回)-(2010/12/05(Sun) 15:20:03)
No55524 (りぃ さん) に返信
>> VBAならReplace
>>  Replace("ab-c","-","") => abc
> Replace関数は私のエクセル(2007)では対応していませんでした。

もしかして、ワークシート関数と勘違いしておられませんか?


> (正確には、関数の型が違っていたようです)
Excel 2007 であれば、
  『VBA の Replace 関数』
  『ワークシート関数 REPLACE』
のいずれも使えます。戻り値の型は、VBA 版/ワークシート関数版ともに「文字列型」です。
ちなみに VBA 版の Replace は、Excel 2000 からの対応です(Excel 97 では不可)。

引数については、ワークシート関数の方は、引数が4つで
 文字列「置換元のデータ」
 数値 「開始位置」
 数値 「置換する文字数」
 文字列「置き換える文字列」
となっています。

一方、VBA 版の方は、引数が3〜6個で
 文字列「置換元のデータ」
 文字列「置き換わる検索文字列」
 文字列「置き換える置換文字列」
 整数 「置換する際の開始位置(省略時は1)」
 整数 「置き換える回数(省略時は全候補を置換)」
 列挙値「比較方法(省略可)…VbCompareMethod」
です。
引用返信 編集キー/
■55526 / inTopicNo.9)  Re[6]: エクセルのVBAにてデータを整理したい
□投稿者/ 魔界の仮面弁士 (1974回)-(2010/12/05(Sun) 16:43:33)
No55525 (魔界の仮面弁士) に追記
> ■No55524 (りぃ さん) に返信
>>Replace関数は私のエクセル(2007)では対応していませんでした。
>>(正確には、関数の型が違っていたようです)
> もしかして、ワークシート関数と勘違いしておられませんか?
あるいは、セル(Range オブジェクト)の Replace メソッドと混同している可能性とか。
Replace メソッドの場合、戻り値がブール型で、引数は2〜8個ですので。

VBA の Replace 関数の使い方については、No55451 の shu さんの記述で問題無いはず…。


'元データ
Sheet1.Range("A1:B6").Value = "ab-c"

'Replace 関数
Sheet1.Range("B1").Value = Replace(Sheet1.Range("B1").Value, "-", "")

'Replace メソッド
Sheet1.Range("B2").Replace "-", ""

'ワークシート関数REPLACE(WorksheetFunction オブジェクト)
Sheet1.Range("B3").Value = WorksheetFunction.Replace(Sheet1.Range("A3").Value, 3, 1, "")

'ワークシート関数REPLACE(式)
Sheet1.Range("B4").FormulaR1C1 = "=REPLACE(RC[-1], 3, 1, """")"

'ワークシート関数SUBSTITUTE(WorksheetFunction オブジェクト)
Sheet1.Range("B5").Value = WorksheetFunction.Substitute(Sheet1.Range("A5").Value, "-", "")

'ワークシート関数SUBSTITUTE(式)
Sheet1.Range("B6").FormulaR1C1 = "=SUBSTITUTE(RC[-1], ""-"", """")"
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -