ひよこさまのExcel講座

意外と知らないExcelの情報を書きます。
たまにExcel以外のことも書いています。

姉妹サイトVBA性能向上委員会も併せてどうぞ。
VBA性能向上委員会
 ⇒ http://www.banana-juice.com/VBA/

一瞬でワークシートを選択する方法

Excelのファイルを作っててありがちなのが、

「ワークシートを探すプチストレス」

ワークシートの数が多くなったり、名前が長くなったりすると、
画面上から全部は見えなくなってしまいます。

selectWsワークシート30枚あります。
でも9枚までしか見えてないですね。
(ギリギリ10枚



そこから目的のワークシートを探すのは、意外とめんどくさいんですよね。

端っこなら簡単に選択できますが、たくさんあるうちの真ん中のワークシートとかだと、けっこう時間かかります。

selectWs2Sheet22って、一番最後から探す?
▲のスピンボタンをカチカチ押して、大変です。
しかも順番に並んでればいいけど…



そんなときは、ワークシートの左にあるスピンボタンの上で「右クリック

すると、ワークシートの一覧がポップアップ表示されます。

そこから目的のワークシートを選択することができます。(あら簡単

selectWs3ワークシート15枚まで表示してくれます



また、ポップアップの一番下にある、「シートの選択…」を選択すると、
シートの選択ダイアログが表示されます。

そこで、リストボックスからワークシートを選択することができます。(あらもっと簡単

selectWs4


この技があれば、ワークシートを探すプチストレスがかなり軽減されるでしょう。

探す時間、ちょっと測って確かめてみてwむっちゃ早いですよ

関数を使わずに楽に計算する方法

Excelは表計算ソフトと呼ばれ、集計をするのが得意なソフトです。

Excelの代表的な機能に、『関数』というものがあり、
それを使うと、『計算』が非常に楽にできるようになります。

なので、Excelを使う人は、『関数』を使いこなすべく、
それの勉強をよくしています


でも今回は、その『関数』を使わないで、
『計算』を楽にしてしまう方法を紹介します。



まずは、計算したいセル範囲を選択します。

autocalc1




実はもうちゃっかり計算されてます。
右下のここ。

autocalc2





これは、Excelの『オートカルク』という機能で、
合計の他にも、個数や平均なども計算してくれます。

表示する内容を変更するには、ステータスバーの上で右クリックをします。

autocalc3




オートカルクは、ちょっとした計算にはかなり便利な機能です。

難しい計算はできませんが、それでも必要最低限はそろっています。

ぜひ活用してみてはいかがでしょうか

セルの書式を変えずにReplace

Replaceメソッドを使うと
実行後のフォントは、すべて一文字目のフォントになってしまいます。

という内容の記事を以前書いたのですが、今回はその解決方法をひとつ

以前の記事は以下リンクよりご覧ください。
ひよこさまのExcel講座:Replaceメソッドとフォントカラー


解決方法は、ずばり『置換前の書式を保持しておく』というもの。

サンプルコードを書いてみたので、載せます。

'╂━─━─━─━─━─━─━─━─━─━─━─━─━─━╂
'┃■書式を保持したままReplace
'┃
'┃@param schStr 検索文字列
'┃@param repStr 置換文字列
'╂━─━─━─━─━─━─━─━─━─━─━─━─━─━╂

Sub 書式を保持したままReplace(ByVal schStr As String, ByVal repStr As String)
Dim schCell As Range ' 検索セル
Dim preCell As Range ' 検索セル保持用
Dim i As Long ' セル文字列添え字
Dim strLength As Long ' セル文字列長

' セルを検索する
Set schCell = Sheet2.UsedRange.Find(What:=schStr, LookAt:=xlPart, MatchCase:=False, MatchByte:=False)

' 書式を保持するためのセルを設定(※別シートなど影響のないセルにする)
Set preCell = Sheet1.Range("A1")

Do Until schCell Is Nothing
' 元の書式を保持する
schCell.Copy preCell

' 置換実行
schCell.Replace What:=schStr, Replacement:=repStr, LookAt:=xlPart, MatchCase:=False, MatchByte:=False

' 文字列の長さを取得
strLength = Len(schCell.Value)

' フォントを元に戻す
For i = 1 To strLength Step 1
' フォントカラー
schCell.Characters(i, 1).Font.ColorIndex = preCell.Characters(i, 1).Font.ColorIndex
' schCell.Characters(i, 1).Font.Color = preCell.Characters(i, 1).Font.Color

' 太字
schCell.Characters(i, 1).Font.Bold = preCell.Characters(i, 1).Font.Bold

' フォント
schCell.Characters(i, 1).Font.FontStyle = preCell.Characters(i, 1).Font.FontStyle

' 斜体
schCell.Characters(i, 1).Font.Italic = preCell.Characters(i, 1).Font.Italic

' サイズ
schCell.Characters(i, 1).Font.Size = preCell.Characters(i, 1).Font.Size

' 下線
schCell.Characters(i, 1).Font.Underline = preCell.Characters(i, 1).Font.Underline

' 影
schCell.Characters(i, 1).Font.Shadow = preCell.Characters(i, 1).Font.Shadow

' 取り消し線
schCell.Characters(i, 1).Font.Strikethrough = preCell.Characters(i, 1).Font.Strikethrough

' 上付き
schCell.Characters(i, 1).Font.Subscript = preCell.Characters(i, 1).Font.Subscript

' 下付き
schCell.Characters(i, 1).Font.Superscript = preCell.Characters(i, 1).Font.Superscript
Next i

' 次のセルへ
Set schCell = Sheet2.Cells.FindNext(schCell)

' 書式を保持していたセルをクリア
preCell.Clear
Loop
Set preCell = Nothing
End Sub



このプログラムを
Call 書式を保持したままReplace("青", "緑")

こんな感じで実行すると、以下の画像のようになります。

replace3

「青」という文字が…



replace4

「緑」に置換されます!!



ただし、このプログラムはちょっといけてないところがあって、
検索文字列と置換文字列の長さが違う場合はうまく置換できません

Call 書式を保持したままReplace("黄, "きいろ")

こんな感じ。

replace5

なんということでしょう。
書式がずれてしまいました。



これを解決させるためには、文字列の長さの差分をみる必要があります。

ただし、それをするにはある程度制約がかかることを知っておいてください。

以下のケース。つらいです。(よーく考えて。)


うえ

これを、『ひらがな』に置換するケース。

置換後の『ひらがな』の色はどうしましょう?





個人的な考えだと、実はそんなことは気にしません。

そもそもExcelって『表計算ソフト』ですよね。
そんなWordみたいなセルの入力の仕方は、論理的でない気がするのでしないです。

Excelの入力の仕方は、以下であるべきだと思ってます。

replace6




そうすれば、いちいち書式を保持しておいて…とかしなくて済みますね

なるべくならめんどくさいロジックを書かなくてすむような書類にしておきたいものです。
livedoor プロフィール
QRコード
QRコード
  • ライブドアブログ