excelの便利マクロ
の編集
http://gpm.jp/pukiwiki/tito/admintito.php?excel%A4%CE%CA%D8%CD%F8%A5%DE%A5%AF%A5%ED
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2009年品川区内の新型インフルエンザ発症状況
2010-02-19 ハッシュ計算の「体感的」高速化
20101229-1
20101229-2
20101229-3
20110108-1
20110502-1
20110511-1
20111224-01
20120504-1
20120610-1
20130509_01
20131018_1
20131018_2
20131022_1
20140502_1
?Õ?é?Ã???å?é?¤?È+?ûÃæÅÅÅô+¤ª´?¤á
AutoboyD5
BCG-34HRC
BQ-391
BQ-396
BracketName
CDに収まる曲をランダムに選ぶ
DS-20 samples
DS-50 samples
EOS_7_CF
EOS_RT_CF
EOS_カスタムファンクション
ExcelTableCmp
FormatRule
FrontPage
Help
IAH1N1
ICD-SX77 Samples
ISBN4-7981-0560-0
InterWiki
InterWikiName
InterWikiSandBox
InterWikiテクニカル
Internet Explorer 8 の開発者ツールは有効期限が「このセッションの終了」のcookieのドメインを正しく表示しない
IoTに思うこと
Linux教科書 LPICレベル1第4版
Linux日常のアプリ
MS-03K
MenuBar
Microsoft dead technology
Microsoft+dead+technology
Olympus ICレコーダー DS-50
Olympus+IC?ì??¡??À¡?+DS-50
PC・情報 基本
PCパーツ2010年
PHP
PsmPlayer
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SONY ICレコーダー ICD-SX77
SandBox
Thinkpad 530Cs
TortoiseHg
UFJのCMを深く検証してみる
WebArena2でtdiary
WikiEngines
WikiName
WikiWikiWeb
WindowsXPでzipフォルダーは使わない
Word/EXCELのプロパティ
Word/EXCELの疑問
Word関係の参考文献
Word文書のチェックポイント
Word文書のチェックポイント2015
YukiWiki
amedasGraph
android docomo ht-03a(htc magic)
android で通知を出したアプリの情報を知る
cvs-revgrep
cvs関連のミニツール
dvd
emacs
excel2010 マクロVBA 導入 手順
excelの便利マクロ
fetchmail-6.2.5
javascriptを無効化
md5_collision
mp3 ファイル名 ナンバリング
mp3+?Õ?¡?¤?ëÌ?+?Ê?ó???ê?ó?°
mpgtx-1_3_1forWin32
mr58
myアルファブロガー
neta資料
perl で Encodeとかutf8フラグとか
privateRPM-vine3.1
psp リンク
psp+?ê?ó?¯
pukiwiki-org??ª±???¡??¢ð???Ñ?¢ð??Ò??¢ë?¢ð?¢Ã
pukiwiki-orgドメインを失う
renumCS.pl
spam関連
squidのログの時刻
ssd
tdiarysearch
tdiaryロボット除け
thc-34gh
tipsやちょっとしたスクリプト
unix/linux関係の日本のベンチャー
w31sa
windows 7 フォルダーオプション
wormのprobe GET をログから除外
zaurusで3D
±Ñ??ϯÂèÆóÈÇ+EPWING??
いろいろ
お勧めしないライト
お風呂でCD ICF-CD73V
お風呂オーディオ
がん閉店
このサイトについて
こんなニュース番組が見たい
やってほしいこと
アメダス_気温・湿度_グラフ
アメダス_気温・湿度_グラフ2
アメダスのグラフ化リンク集
オーディオ関連のツール
カドニカ電池スペーサー
クッキーがブロックされる
クリックスルーを取得
トイレ専用エレベーター
ハードディスク物理的破壊の一例
ファイルの数を数える
ファイル名
ファイル名とは
ファイル名リストからCD-TEXT対応のCDを作成する
フラッシュライト 懐中電灯 お勧め
プライベートアドレスを指すDNSレコード ホスト名
プログラミング類似語
ヘルプ
マージ
メールサーバ 手順 不適切なメールの削除
メールサーバーの更新・切り替えの手順案
メールサーバー不具合時の考慮事項
ワークシートの名前を変えたりブック間移動
ワークシート一覧
英辞朗第二版 EPWING化
開発環境
気温番長twitter連携
気象地震関連リンク
蕎麦(乾麺)
携帯電話用ブックマーク
見づらいページを見やすく
五反田
五反田2
購入検討書籍
降りられないリンク集
最強PC
雑音
時間外取引 立ち会い外取引
時間認証を試す
自分向け携帯端末用リンク
実現されたアイデア
趣味の録音機カタログ
充電器
数列生成
整形ルール
青色LED関連
線形探索c++
組織の評価
大井町
大森
注意する言葉
聴いているpodcasting
投票テスト
東京近県グラフ
東京近郊
東京近郊の公共交通機関
日常よく使われる言葉だけど
日本語
日本全域
秘密
非接触温度計 QT-3
品川区のスーパー
品川区の住居表示
品川区内の新型インフルエンザ発症状況
不認可に関するFAQ
浮動小数点数と指数対数演算
物欲
文字コード変換
文字列を指定幅で分割する
文書について
20040415
20040416
20040509
20040706
20040708
20040811
20041009
20041015
20041219
20050113
20050208
20050403
20050421
20050425
20050502
20050519
20050521
20050527
20050602
20050605
20050622
20050725
20050826
20050828
20050922
20051022
20051108
20051124
20060127
20060323
20060328
20060401
20060406
20060407
20060411
20060414
20060416
20060417
20060420
20060425
20060426
20060521
20060522
20060530
20060710
20060715
20060716
20060818
20061007
20061026
20061124
20061230
20070204
20070317
20070408
20070421
20070426
20070512
20070708
20070713
20081115
20090429
20090517
20090608
20090706
20090913
20091107
20100827
20100828
20100914
20101012
20130310
20131007
20140215
20140226
200051212
[[excel2010 マクロVBA 導入 手順]] #contents エラー処理とかはしていないので条件によってはVBAのエラーが出て止まってしまいます。 実行する前にセーブしておきましょう。 * excelの便利マクロ [#wee5bb42] ** キーに割り当てると便利 [#xdf113ce] *** タイムスタンプを記録 [#b3cd742f] 日付と時刻をセルに入力します。 Sub timestamp2() ActiveCell.FormulaR1C1 = "=NOW()" Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub 備考: 日付や時刻の挿入はそれぞれCtrl+":"やCtrl+";"でできます。 *** 新しいシートを固定幅フォントで作成 [#bc1c8469] 新しいシートを作成しフォントを固定幅、書式を文字列に設定します。 Sub AddNewSheetFormatString() Sheets.Add After:=Sheets(Sheets.Count) Cells.Select Selection.NumberFormatLocal = "@" Cells.Select With Selection.Font .Name = "MS ゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select ActiveCell.FormulaR1C1 = "書式を文字列、MSゴシックに設定しました。" ActiveCell.Characters(1, 2).PhoneticCharacters = "ショシキ" ActiveCell.Characters(4, 3).PhoneticCharacters = "モジレツ" ActiveCell.Characters(15, 2).PhoneticCharacters = "セッテイ" End Sub *** 最後のシートを選択 [#m397bcb7] Sub SelectLastSheet() Worksheets(Worksheets.Count).Select End Sub *** 最初のシートを選択 [#i90b44bb] Sub SelectFirstSheet() Worksheets(1).Select End Sub *** 次のシートを選択 [#ybdeead4] 以下のコードは不要 Ctrl+PageDown で一発だった。VBAだと ActiveSheet.Next.Select 1行。 Sub SelectNextSheet() Dim i As Integer i = 1 For Each s In Worksheets If Worksheets(i).Name = ActiveSheet.Name Then Exit For End If i = i + 1 Next s If i < Worksheets.Count Then Worksheets(i + 1).Select End If End Sub *** 前のシートを選択 [#ec655ee6] 同様にCtrl+PageUpでok。VBAでは ActiveSheet.Previous.Select Sub SelectPrevSheet() Dim i As Integer i = 1 For Each s In Worksheets If Worksheets(i).Name = ActiveSheet.Name Then Exit For End If i = i + 1 Next s If Worksheets(i).Name = ActiveSheet.Name And i > 1 Then Worksheets(i - 1).Select End If End Sub *** 選択された領域を削除し上へ詰める [#q4b4b440] Sub DeleteCellAndUp() Selection.Delete Shift:=xlUp End Sub *** 現在行を削除 [#n60a9f1e] Sub DeleteRow() Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp End Sub *** 現在セルから下方向の一連のセルを右へ移動 [#m1457063] Sub RowsToRight() Range(Selection, Selection.End(xlDown)).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove End Sub *** 現在行の下に行を追加 [#p0d64136] Sub InsertRowDown() c = ActiveCell.Column r = ActiveCell.Row x = ActiveCell Rows(ActiveCell.Row + 1).Select Selection.Insert Cells(r + 1, c).Select End Sub *** 現在行に行を追加 [#m8439eab] Sub InsertRow() c = ActiveCell.Column r = ActiveCell.Row x = ActiveCell Rows(ActiveCell.Row).Select Selection.Insert Cells(r, c).Select End Sub *** 値を貼り付け [#o71a4ec6] Sub PasteValues() Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub ** ブックの構成を整えるのに便利 [#ye0b7353] *** シート一覧を作成 [#f4d23844] カレントセルから下へシートの一覧を作成します。各シートのA1へのリンクが付きます。 Sub ListSheets() Dim r As Integer r = 0 For Each s In Worksheets ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset(r), Address:="", _ SubAddress:="'" + s.Name + "'!A1", TextToDisplay:=s.Name r = r + 1 Next s End Sub *** ファイル名一覧からシート一覧を作成 [#te91c136] シート1のセルA1から絶対パス表記でのブック一覧からシート2にブック/シート一覧を作成します。 Sub ListFilesAndSheets() Dim bb As Workbook Set bb = ActiveWorkbook Worksheets(1).Select Dim ss(999) As String f = 1 r = 1 Do While Cells(f, 1).Value <> "" fn = Cells(f, 1).Value Workbooks.Open Filename:=fn, UpdateLinks:=False, ReadOnly:=True ns = Worksheets.Count i = 0 For Each s In Worksheets i = i + 1 ss(i) = s.Name Next s ActiveWorkbook.Close SaveChanges:=False bb.Activate Worksheets(2).Select Cells(r, 1).Value = fn r = r + 1 For i = 1 To ns ActiveSheet.Hyperlinks.Add Anchor:=Cells(r, 2), Address:=fn, _ SubAddress:="'" + ss(i) + "'!A1", TextToDisplay:=ss(i) r = r + 1 Next Worksheets(1).Select f = f + 1 Loop End Sub 1番目と2番目のシートはこのマクロのためにあらかじめ用意してください。 ファイル名一覧はコマンドプロンプトで dir /b /s *.xls* > filelist.txt するとテキストファイルとして得られるのでそれを張り付けています。 マクロでフォルダを指定できるようにするのがいいでしょう。 *** シート名の一括置き換え [#g0dfec18] 1番目のシートのA2に元のシート名、B3の新しいシート名のように記入した表を 作ってください。マクロを実行するとシート名を一括で置き換えます。 Sub MovSheet() r = 2 Do While Cells(r, 1).Value <> "" ActiveWorkbook.Sheets(r).Name = " " & r r = r + 1 Loop r = r - 1 Do While r > 1 If Cells(r, 2).Value = "" Then ActiveWorkbook.Sheets(r).Name = Cells(r, 1) ElseIf Cells(r, 3).Value = "" Then ActiveWorkbook.Sheets(r).Name = Cells(r, 2) ElseIf Cells(r, 4).Value = "" Then Set wb = ActiveWorkbook sn = Cells(r, 2) ActiveWorkbook.Sheets(r).Name = sn ActiveWorkbook.Sheets(r).Copy _ before:=Workbooks(Cells(r, 3).Value).Worksheets(1) wb.Activate ElseIf Cells(r, 4).Value = "MOVE" Then Set wb = ActiveWorkbook sn = Cells(r, 2) ActiveWorkbook.Sheets(r).Name = sn ActiveWorkbook.Sheets(r).Move _ before:=Workbooks(Cells(r, 3).Value).Worksheets(1) wb.Activate End If r = r - 1 ActiveWorkbook.Sheets(1).Select Loop End Sub C列にブック名を入力すると該当シートを指定されたブックにコピーします。 D列に"MOVE"と指定があると移動になります。 ** その他 [#aa83003d] *** 文字列を指定幅で分割 [#b32743c9] [[文字列を指定幅で分割する]]
タイムスタンプを変更しない
[[excel2010 マクロVBA 導入 手順]] #contents エラー処理とかはしていないので条件によってはVBAのエラーが出て止まってしまいます。 実行する前にセーブしておきましょう。 * excelの便利マクロ [#wee5bb42] ** キーに割り当てると便利 [#xdf113ce] *** タイムスタンプを記録 [#b3cd742f] 日付と時刻をセルに入力します。 Sub timestamp2() ActiveCell.FormulaR1C1 = "=NOW()" Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub 備考: 日付や時刻の挿入はそれぞれCtrl+":"やCtrl+";"でできます。 *** 新しいシートを固定幅フォントで作成 [#bc1c8469] 新しいシートを作成しフォントを固定幅、書式を文字列に設定します。 Sub AddNewSheetFormatString() Sheets.Add After:=Sheets(Sheets.Count) Cells.Select Selection.NumberFormatLocal = "@" Cells.Select With Selection.Font .Name = "MS ゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Range("A1").Select ActiveCell.FormulaR1C1 = "書式を文字列、MSゴシックに設定しました。" ActiveCell.Characters(1, 2).PhoneticCharacters = "ショシキ" ActiveCell.Characters(4, 3).PhoneticCharacters = "モジレツ" ActiveCell.Characters(15, 2).PhoneticCharacters = "セッテイ" End Sub *** 最後のシートを選択 [#m397bcb7] Sub SelectLastSheet() Worksheets(Worksheets.Count).Select End Sub *** 最初のシートを選択 [#i90b44bb] Sub SelectFirstSheet() Worksheets(1).Select End Sub *** 次のシートを選択 [#ybdeead4] 以下のコードは不要 Ctrl+PageDown で一発だった。VBAだと ActiveSheet.Next.Select 1行。 Sub SelectNextSheet() Dim i As Integer i = 1 For Each s In Worksheets If Worksheets(i).Name = ActiveSheet.Name Then Exit For End If i = i + 1 Next s If i < Worksheets.Count Then Worksheets(i + 1).Select End If End Sub *** 前のシートを選択 [#ec655ee6] 同様にCtrl+PageUpでok。VBAでは ActiveSheet.Previous.Select Sub SelectPrevSheet() Dim i As Integer i = 1 For Each s In Worksheets If Worksheets(i).Name = ActiveSheet.Name Then Exit For End If i = i + 1 Next s If Worksheets(i).Name = ActiveSheet.Name And i > 1 Then Worksheets(i - 1).Select End If End Sub *** 選択された領域を削除し上へ詰める [#q4b4b440] Sub DeleteCellAndUp() Selection.Delete Shift:=xlUp End Sub *** 現在行を削除 [#n60a9f1e] Sub DeleteRow() Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp End Sub *** 現在セルから下方向の一連のセルを右へ移動 [#m1457063] Sub RowsToRight() Range(Selection, Selection.End(xlDown)).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove End Sub *** 現在行の下に行を追加 [#p0d64136] Sub InsertRowDown() c = ActiveCell.Column r = ActiveCell.Row x = ActiveCell Rows(ActiveCell.Row + 1).Select Selection.Insert Cells(r + 1, c).Select End Sub *** 現在行に行を追加 [#m8439eab] Sub InsertRow() c = ActiveCell.Column r = ActiveCell.Row x = ActiveCell Rows(ActiveCell.Row).Select Selection.Insert Cells(r, c).Select End Sub *** 値を貼り付け [#o71a4ec6] Sub PasteValues() Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub ** ブックの構成を整えるのに便利 [#ye0b7353] *** シート一覧を作成 [#f4d23844] カレントセルから下へシートの一覧を作成します。各シートのA1へのリンクが付きます。 Sub ListSheets() Dim r As Integer r = 0 For Each s In Worksheets ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset(r), Address:="", _ SubAddress:="'" + s.Name + "'!A1", TextToDisplay:=s.Name r = r + 1 Next s End Sub *** ファイル名一覧からシート一覧を作成 [#te91c136] シート1のセルA1から絶対パス表記でのブック一覧からシート2にブック/シート一覧を作成します。 Sub ListFilesAndSheets() Dim bb As Workbook Set bb = ActiveWorkbook Worksheets(1).Select Dim ss(999) As String f = 1 r = 1 Do While Cells(f, 1).Value <> "" fn = Cells(f, 1).Value Workbooks.Open Filename:=fn, UpdateLinks:=False, ReadOnly:=True ns = Worksheets.Count i = 0 For Each s In Worksheets i = i + 1 ss(i) = s.Name Next s ActiveWorkbook.Close SaveChanges:=False bb.Activate Worksheets(2).Select Cells(r, 1).Value = fn r = r + 1 For i = 1 To ns ActiveSheet.Hyperlinks.Add Anchor:=Cells(r, 2), Address:=fn, _ SubAddress:="'" + ss(i) + "'!A1", TextToDisplay:=ss(i) r = r + 1 Next Worksheets(1).Select f = f + 1 Loop End Sub 1番目と2番目のシートはこのマクロのためにあらかじめ用意してください。 ファイル名一覧はコマンドプロンプトで dir /b /s *.xls* > filelist.txt するとテキストファイルとして得られるのでそれを張り付けています。 マクロでフォルダを指定できるようにするのがいいでしょう。 *** シート名の一括置き換え [#g0dfec18] 1番目のシートのA2に元のシート名、B3の新しいシート名のように記入した表を 作ってください。マクロを実行するとシート名を一括で置き換えます。 Sub MovSheet() r = 2 Do While Cells(r, 1).Value <> "" ActiveWorkbook.Sheets(r).Name = " " & r r = r + 1 Loop r = r - 1 Do While r > 1 If Cells(r, 2).Value = "" Then ActiveWorkbook.Sheets(r).Name = Cells(r, 1) ElseIf Cells(r, 3).Value = "" Then ActiveWorkbook.Sheets(r).Name = Cells(r, 2) ElseIf Cells(r, 4).Value = "" Then Set wb = ActiveWorkbook sn = Cells(r, 2) ActiveWorkbook.Sheets(r).Name = sn ActiveWorkbook.Sheets(r).Copy _ before:=Workbooks(Cells(r, 3).Value).Worksheets(1) wb.Activate ElseIf Cells(r, 4).Value = "MOVE" Then Set wb = ActiveWorkbook sn = Cells(r, 2) ActiveWorkbook.Sheets(r).Name = sn ActiveWorkbook.Sheets(r).Move _ before:=Workbooks(Cells(r, 3).Value).Worksheets(1) wb.Activate End If r = r - 1 ActiveWorkbook.Sheets(1).Select Loop End Sub C列にブック名を入力すると該当シートを指定されたブックにコピーします。 D列に"MOVE"と指定があると移動になります。 ** その他 [#aa83003d] *** 文字列を指定幅で分割 [#b32743c9] [[文字列を指定幅で分割する]]
テキスト整形のルールを表示する