Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Excelのどうでもよいtipsの紹介
Search
tsuda.a
October 05, 2015
Programming
46
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Excelのどうでもよいtipsの紹介
Excelのどうでもよいtipsの紹介
tsuda.a
October 05, 2015
More Decks by tsuda.a
See All by tsuda.a
Git を GUI で使う話
tsudaahr
0
140
マジカルインクリメントと指数表記
tsudaahr
0
290
バックアップしていますか?
tsudaahr
0
170
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
180
NPUわからん
tsudaahr
0
230
計算量オーダーの話
tsudaahr
1
490
クラウド初学者が抱える不安について
tsudaahr
0
470
キューとは何か
tsudaahr
0
310
等幅は死んだ(ぇ
tsudaahr
0
150
Other Decks in Programming
See All in Programming
iOSDC2026登壇資料.pdf
riofujimon
0
200
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
330
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
350
AWSに止められる覚悟してますか?
morizo_1984
2
490
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
270
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.8k
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.3k
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
290
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.3k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
120
Java 27新機能 / Java 27 new features
kishida
2
190
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
530
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Done Done
chrislema
187
17k
エンジニアに許された特別な時間の終わり
watany
109
250k
Mobile First: as difficult as doing things right
swwweet
225
10k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Prompt Engineering for Job Search
mfonobong
0
470
Transcript
Excelのどうでもよい Tipsの紹介 @tsuda_ahr LTDD #19
Excel 2016 でました。パッケージ版は廃止との由。 http://pc.watch.impress.co.jp/docs/news/20150929_723249.html
お値段は 14,800 円
Office ではなく Excel 単体? いや、実際、Excel しか 使ってないよね? (ぇ
話は違いますが Visio は健在です。みんな買いましょう。
さて本題
いくつか、どうでもいい Tip を紹介します。 1. ワークシート名をセルに表示したい 2. 条件付き書式を固定化したい 3. 結合したセルの高さを自動調整したい 4.
CTRL+選択で選択ミスしたときの対応方法
1.ワークシート名をセルに表示したい
こんなことってありませんか? 連動させたい こんな感じで呼びたい
マクロで組めば瞬殺? • 作ろうとすると、実は結構難しい
ポイントは2点 • 呼ばれ元のシート名が分からない • Application.Caller.Worksheet.Name (*1) で求める (ActiveSheet.Name だと、うまくいきません) •
シート名を変更しても、セル側の表示が連動しない • Application.Volatile (*1) を指定する (*1) 個別の意味の詳細はぐぐって下さい
完成したコード Function ThisWorksheetName() As String Application.Volatile ThisWorksheetName = Application.Caller.Worksheet.Name End
Function
2.条件付き書式を固定化したい
こんなことってありませんか? これを固定化したい
形式を選択して貼り付け、ではうまくいかない。 書式だけのコピーはできるけど、条 件付き書式の固定化はできない つまり 「数式」に対する「値」 のようなオプションはない
マクロで… • 無理(汗 難易度が高すぎる。 • 条件付き書式の適用結果示すプロパティが存在しない。 • たとえば、Range(“~”).Interior.Color をみても、条件付き書式の適用前の色しか取得できない。 •
無理にマクロで頑張る場合、条件付き書式を解析する必要がある。 Range(“~”).FormatConditions(n) を一つ一つみて、条件が適合しているかを判断する必要がある。
そこで Word ! ① Excel でコピー ② Word に貼り付け ③
Word でコピーしなおし ④ Excel に貼り直し
すると文字を消してもこの通り!
教訓 • Excel だけに頼るな!
ただ、データバーとかアイコンセットとかはダメです(汗 こういうのはダメ
Word を買ってない人はどうすればいいのか? • 同じことは VBA とPowershell (*1) を使って、できないこともない (汗 Sub
PasteDisplayInterior() Set wsh = CreateObject("WScript.Shell") cmd = "Powershell -sta -command " _ & """" _ & " Add-Type -an System.Windows.Forms; " _ & " $a = [System.Windows.Forms.Clipboard]::GetData('HTML Format'); " _ & " [System.Windows.Forms.Clipboard]::Clear(); " _ & " [System.Windows.Forms.Clipboard]::SetData('HTML Format', $a); " _ & """" wsh.Run cmd, 0, True ActiveSheet.Paste End Sub 要するに HTML (*1) Powershell の使用は個人的な好み。
3.結合したセルの高さを自動調整したい
単一のセルの場合 ここをダブルクリックすると 高さを自動調整してくれる
結合したセルの場合 ここをダブルクリックすると 結合したセル 逆に高さを低くされた!
なんで? • 複合セルのデータは自動調整の対象から外されるから。 • 対象の行/列の、単一のセルの調整結果が設定される。 • 対象の行/列に結合セルと空セルしかない場合は、デフォルトの幅、または高さが設定される。 • なぜ外されるかと言えば、自動調整できないから。 •
たとえば、以下のようなセル結合の場合、自動調整でどこのセルの高さや幅を調整すればよいか判 断できますか?
でもでも • 確かにセル結合していますけど、今回自動調整したいのは高さ側で、行方向にはセル 結合していないじゃないですか • だったら自動調整してくれても良いのでは? • でもやってくれない (´・ω・`) •
「折り返して全体を表示する」にしなければ、フォントの高さには合わせてくれるようではある… 行方向は1セル 列方向は複数セルだけど
なんとかならないか? • VBAで書いたらなんとかなった! 対象のセルを選択して CTRL + SHIFT + A を押す!
ショートカットキーを 割り当てる
その VBA のコード (1) Sub AutoFitHeight() ' 対象のセルを決定 Dim targetCell
As Range Set targetCell = ActiveCell ' 「折り返して全体を表示」を設定 targetCell.WrapText = True
VBA のコード (2) ' 枠の幅 Dim borderWidth As Variant borderWidth
= 0.63 ' 連結したセルの幅を計算 Dim totalWidth As Variant Dim x As Range totalWidth = -borderWidth For Each x In targetCell.MergeArea.Columns totalWidth = totalWidth + x.ColumnWidth + borderWidth Next この値は当て推量かつ固定(汗
VBA のコード (3) ' 作業用のWorkBookを作成 Dim work As Worksheet Set
work = ThisWorkbook.Sheets.Add ' 作業用のシートに、対象のセルをコピー targetCell.Copy work.Paste ' 貼り付けたセルのセル結合を解く Selection.UnMerge
VBA のコード (4) ' 計測した対象セルの幅を、貼り付け先のセルの幅に設定し、自動調整を実行 ActiveCell.ColumnWidth = totalWidth ActiveCell.EntireRow.AutoFit '
自動調整で得たセルの高さを、対象のセルに設定 targetCell.RowHeight = ActiveCell.Height ' 作業シートの削除 Application.DisplayAlerts = False work.Delete Application.DisplayAlerts = True End Sub
なにをやっているのか? • 結合セルでは自動調整できないので、単一セルに内容をコピーして自動調整させる。 • そのために、作業用のワークシートを作成し、そこに対象のセルをコピーする。 (元シートで操作せず他のシートにコピーするのは、元シートへの影響を極力排除したいためです) • おおよそ以下の手順で作業。 1. 対象の結合セルの幅を計測する。
2. 作業用のワークシートを追加。 3. 対象の結合セルを、作業用のワークシートにコピーする。 4. コピー先のセルの結合を解除し、単一セルにする。 5. 上記 1. で計測したセル幅を、コピー先のセルに適用し、高さの自動調整をする。 6. 自動調整で得た高さを、対象のセルの高さとして設定する。 7. 最後に作業用のワークシートを削除する。
結論 • めんどうくさい。 • すなおに手動で調整しよう(汗
4.CTRL+選択で選択ミスしたときの対応方法
黄色の箇所だけ選択したい
失敗した (´・ω・`) あと一つのところで、 違うセルを選択(汗
複数選択時の「一つだけ解除」はいまだに実装されてない • 早く実装して(汗 #きっと無理
次善策? • マクロ記録を使う
(1) 記録開始 ALT+F11で VBEを起動 記録開始
(2) 選択していくと記録されていく。
(3) 失敗したら、マクロを停止して編集しましょう 消す 停止して 消す
(4) 編集したマクロを実行! すると選択されてない状態に戻る マクロを実行
(5) 再びマクロの記録開始から続行! 記録開始 選択 マクロで選択済みのものも 含めて記録される
この方法の欠点 • まあ失敗するときは、こんな準備なんてしていないわけで(汗
ご清聴ありがとうございました。