![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは、VBAを勉強中の者です。
任意のシート(20000行×30列くらいでデータが入っています)に入力されているコメントのみを別シートに抽出し、一列に一覧表示させたいです。
自分でも調べてみて、とりあえずコメントは操作可能ということはわかったのですが、
・任意のシートの中身を行と列の二次元に検索していく方法(特定の行のみ検索するコードはあちこちで見受けられるのですが)
・拾ったコメントの内容を別シートに書き込むのを「高速で」行う方法(その都度書き込んでアクティブセルを移動させる…というのならわかるのですが、データの量が膨大なので、これだと途方もない時間がかかってしまいそうです)
以上の方法がわからないでいます。
また、抽出したコメントは、配列関数を使えば処理が早いのでしょうか。
となると、書き込む件数が何件発生するかわからない場合はどうするのだろうか、と行き詰まっています。
(さらに贅沢を言いますと、コメントが入っていたセル番号が隣の列に入っているといいな、という希望もありますが、これはあくまで第二希望です)
VBA勉強中ですので、パーフェクトに動くコードでなくても構いません。断片的なヒントでも大歓迎です。
VBAに詳しい方、ご教示頂けますでしょうか。
No.2ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。Comments コレクション内を For Each で、ループ処理します。
配列は使うまでもないと思います。
Sub Sample()
Dim C As Comment
Dim Cmt As Comments
Dim R As Long
Set Cmt = ActiveSheet.Comments
Application.ScreenUpdating = False
With Worksheets.Add
.Cells(1, 1).Value = "ADDRESS"
.Cells(1, 2).Value = "TEXT"
R = 2
For Each C In Cmt
'コメントの場所
strAddress = C.Parent.Address
'コメントの内容
strText = C.Text
'書き込み
.Cells(R, 1) = strAddress
.Cells(R, 2) = strText
R = R + 1
Next C
End With
Set Cmt = Nothing
End Sub
いつもお世話になっております。
コードもパーフェクトです!いつもながら素晴らしい!
想像していたよりもずっとシンプルなコードで、驚いています。
あとで勉強のため、解読させていただきますね。
まずはとりあえず、お礼まで。
No.1
- 回答日時:
以下のコードで、コメントが別シートに張り付くと思います。
(未確認)------------------------------
Dim cms As Comments
Dim cm As Comment
Dim rg as Range
dim v as variant
set cms = worksheets("任意のシート名").Comments
v = worksheets("任意のシート名").Range("A1:AF20000).value 'データが入っている範囲
for each cm in cms
v(cm.Parent.Row, cm.Parent.Column) = cm.Text
' cm.Parent.Address に$A$1とか入ってます。
next
worksheets("貼り付けたいシート名").Range("A1:AF20000).value = v
こんにちは、動作確認させていただきました。
これは、貼り付け先のシートの、コメントが入っている位置のセルそのものに、コメントが入る仕様ですね。
今回一列に並べたかったので、No.2さんのものを採用させて頂きますが、こちらも応用がききそうです。
どうもありがとうございました。
※なお、実行時に("A1:AF20000) の部分を("A1:AF20000")と修正いたしました。
些細なことですが、今後この回答を参考にされる方の為に、補足させて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) 複数のシートを一つのシートにまとめたい 左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽 2 2022/09/18 18:42
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
エクセルで「ページレイアウト...
-
エクセルの数式バーのフォント...
-
エクセルの関数について教えて...
-
エクセルでセルに標準で入力さ...
-
Microsoft1Officeの互換ソフト...
-
シフト表をエクセルで作るとき...
-
ユーザー定義関数をアドイン登...
-
Excel VBAで全ての矢印を赤色に...
-
VBA Private Sub Worksheet_Cha...
-
2列に入っているデータを1列...
-
Excelに詳しい方! B列が「日...
-
excel2013 MonthDays 関数が使...
-
エクセルのクイックアクセスツ...
-
Excelの数式について教えてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報