SlideShare a Scribd company logo
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) 再びマクロの記録開始から続行!
記録開始
選択
マクロで選択済みのものも
含めて記録される
この方法の欠点
• まあ失敗するときは、こんな準備なんてしていないわけで(汗
ご清聴ありがとうございました。

More Related Content

PPTX
仕事が10倍加速するExcelの基本テクニック
PDF
1歩目から間違えないためのExcel術 先生:田中亨(Office TANAKA)
PPTX
業務効率化のためのエクセルのアイデア 20151112
PDF
誰も教えてくれない、Excelマクロ/VBAの使い方 先生:田中亨(Office TANAKA)
PDF
ゼロからわかるVBA
PPT
Excelマクロであなたも仕事の達人に!
PDF
VBAで数値計算 01 数値計算の紹介
PPTX
最新 Office アプリの自動保存に関わる小ネタ
仕事が10倍加速するExcelの基本テクニック
1歩目から間違えないためのExcel術 先生:田中亨(Office TANAKA)
業務効率化のためのエクセルのアイデア 20151112
誰も教えてくれない、Excelマクロ/VBAの使い方 先生:田中亨(Office TANAKA)
ゼロからわかるVBA
Excelマクロであなたも仕事の達人に!
VBAで数値計算 01 数値計算の紹介
最新 Office アプリの自動保存に関わる小ネタ

Viewers also liked (20)

PDF
VBAで数値計算 03 数式実装パターン
PDF
賢くツールを使って脱人海戦術駆動テスト
PDF
EXCELで効率的にシュミレーションを作る方法:EXCEL道場2
PPTX
Excel基礎講座
KEY
20121103 #odstudy できる! VBAマクロ
PPT
EXCELでシミュレーションの作り方を学ぶシミレーション地獄
PDF
ガラパゴスExcel
PPTX
社内の画像変換サーバーをGoで置き換えた話
PDF
『運用屋さんのためのVBA入門』 ~ 運用方法論 運用工程設計・自動化概論 〜
PDF
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
PDF
プロジェクト管理における課題管理ツール運用の”勘所”
PDF
エクセルで統計分析2 HADの使い方
PDF
Ofiice研修資料販売
PDF
VBAで数値計算 02 数式の関数をプログラムの関数で実装
PDF
エクセルでテキストマイニング TTM2HADの使い方
PDF
20161116 税理士のための業務改善の考え方とIT活用
PPTX
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
PDF
「使ってもらえるアプリの考え方」スマホデザイン会議 2012 忘年会スライド
PPTX
Excelの話
PDF
誰でも見やすいパワーポイントを作るための パワーポイントバイブル
VBAで数値計算 03 数式実装パターン
賢くツールを使って脱人海戦術駆動テスト
EXCELで効率的にシュミレーションを作る方法:EXCEL道場2
Excel基礎講座
20121103 #odstudy できる! VBAマクロ
EXCELでシミュレーションの作り方を学ぶシミレーション地獄
ガラパゴスExcel
社内の画像変換サーバーをGoで置き換えた話
『運用屋さんのためのVBA入門』 ~ 運用方法論 運用工程設計・自動化概論 〜
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
プロジェクト管理における課題管理ツール運用の”勘所”
エクセルで統計分析2 HADの使い方
Ofiice研修資料販売
VBAで数値計算 02 数式の関数をプログラムの関数で実装
エクセルでテキストマイニング TTM2HADの使い方
20161116 税理士のための業務改善の考え方とIT活用
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
「使ってもらえるアプリの考え方」スマホデザイン会議 2012 忘年会スライド
Excelの話
誰でも見やすいパワーポイントを作るための パワーポイントバイブル
Ad

More from tsudaa (18)

PDF
Json型の使い方
PDF
ぬぎんくす問題
PDF
Windows でも時刻合わせがしたい!
PDF
Python と私の事情
PDF
真理とは何か
PDF
MySQL のユーザー定義変数と RDB のココロ
PDF
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
PDF
ドメイン名の話 (データベース/SQL)
PDF
スターマークの話
PDF
Powershell のセキュリティ (大都会ver)
PDF
昼の12時は午○何時?
PDF
PowerShell 紹介
PDF
全角チルダ問題
PPTX
資格は役に立つか
PDF
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
PDF
文字数はおいくら?(Ruby版)
PDF
法律の読み方とか
PDF
C++入門?
Json型の使い方
ぬぎんくす問題
Windows でも時刻合わせがしたい!
Python と私の事情
真理とは何か
MySQL のユーザー定義変数と RDB のココロ
HiroshimaJUG の 「Java8 Lambda ハンズオン with すごい広島」 を5分で振り返る
ドメイン名の話 (データベース/SQL)
スターマークの話
Powershell のセキュリティ (大都会ver)
昼の12時は午○何時?
PowerShell 紹介
全角チルダ問題
資格は役に立つか
○○型言語と呼ばれるために備えるべき最低限の条件についての検討
文字数はおいくら?(Ruby版)
法律の読み方とか
C++入門?
Ad

Excelのどうでもよいtipsの紹介