9/30/2018

今週のFacebookページの投稿 2018/09/24-2018/09/30

今週のFacebookページの投稿 2018/09/24-2018/09/30

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

9月24日
Excel。
mid関数は文字列の途中から文字を抽出関数です。

9月25日
Excel。
midb関数は文字列の途中から文字を抽出関数です。
ちなみに半角=1バイトでバイト単位です。

9月26日
Excel。len関数は文字数を算出関数です。

9月27日
Excel。lenb関数は文字数を算出関数です。
ちなみに半角=1バイトでバイト単位です。。

9月28日
Excel。trim関数は余分なスペースを削除関数です。

9月29日
Excel。jis関数は文字列を全角に統一関数です。

9月30日
Excel。asc関数は文字列を半角に統一関数です。

Excelテクニック and  MS-Office recommended by PC training
https://www.facebook.com/exceltechniqueandmsoffice/

Excelのショートカット一覧はこちらで書いております。
http://yandss.p2.weblife.me/shortcutkey.html

9/29/2018

Excel。マクロ35。連続した規則性のあるシートを並び替えてみよう【SORT】

Excel。マクロ35。連続した規則性のあるシートを並び替えてみよう

<Excel VBA:シートの並び替え>

シートが多くなってくると、
あるカテゴリー別に並び替えたりすることがでてきますが、
大量のシートを並び替えようとすると、結構面倒なことに気が付きます。

その原因は、データの並び替えはあるけど、
シートの並び替えが無いことなんですね。

昇順や降順ボタンがあれば、ポチッで済むのですが、それができない。

このような面倒な処理となれば、
Excel VBAでマクロを作るというのが基本的な流れになるわけですね。

何か難しそうなイメージがするかもしれませんが、
それほど厄介なプログラム文ではありませんので、知っておくと便利ですよ。

では、次のような状態でシートが並んでいます。


今回は、規則性のある連続したシートの並び替えを紹介しますので、
単純に4月~9月を並び替えていきます。

それ以外のシートは並び替えの対象外とします。

プログラムに詳しい人は、
配列を使って…という方法が処理も早いしとかあるとは思いますが、
一般事務職というか、プログラムには詳しくないけど、
作業効率を改善したい人は山のようにいらっしゃいますので、
今回は、配列を使わない方法で挑戦していきます。

流れとしては、新しいシートを挿入して、各シート名を拾ってきて、
並び替えをして、その順番にシートを移動させたあと、
挿入したシートは作業用シートなので、削除するという流れがいいかと思います。

まず、完成したプログラム文です。
Sub シート並び替え連続()
    Dim i As Long
   
    With Sheets.Add
        For i = 5 To Sheets.Count
            .Cells(i - 4, 1) = Sheets(i).Name
        Next i
       
        .Range("a1").CurrentRegion.Sort .Range("a1")

        Sheets(.Cells(1, 1).Value).Move before:=Sheets(5)       
        For i = 6 To Sheets.Count
            Sheets(.Cells(i - 4, 1).Value).Move after:=Sheets(i - 1)
        Next i
       
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
    End With
End Sub

実際に動かしながら説明をしていきます。

Dim i As Long
これは、お馴染みの変数を宣言しているところです。
大外を、
With Sheets.Add~End With
でWith文で囲っています。
新しく追加したシートを省略しているわけですね。

【追加したシートにシート名を回収する】

For i = 5 To Sheets.Count
   .Cells(i - 4, 1) = Sheets(i).Name
Next i
ここまでを実行してみましょう。

新しいシートが挿入されて、A1からシート名を拾ってきて入力されています。

なお、新しいシートは、
アクティブにしてあるシートの左側に挿入されます。

For i = 5 To Sheets.Count
シートの5番目からシートの最後までという意味ですね。

シートが挿入されるので、”+1”するのがポイントですね。

Cells(i - 4, 1) = Sheets(i).Name
A1に、5番目のシート名をいれます。

この新しく挿入したシートに作ったシート名の一覧を使って次の作業をします。

【並び替える順番を準備する】

.Range("a1").CurrentRegion.Sort .Range("a1")

シート名の一覧ができましたが、
今回は4月~9月と規則性のある並び替えをします。

.Range("a1").CurrentRegion.Sort .Range("a1")
A1の表を選択して並び替えをするという意味ですね。

【シートを並び替える】

Sheets(.Cells(1, 1).Value).Move before:=Sheets(5)       
For i = 6 To Sheets.Count
    Sheets(.Cells(i - 4, 1).Value).Move after:=Sheets(i - 1)
Next i
ここで、実際にシートの並び替えをしています。

Sheets(.Cells(1, 1).Value).Move before:=Sheets(5)     

新しく挿入したシートの右側(before:=Sheets(5))に、
最初のシートを移動します。

その移動したシートの右側にシートを移動させて、
シートの並び替えをしていきます。

これで完成しているのですが、作業用に追加したシートが不要になります。

【不要になった作業用シートを削除】

Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
削除しますか?というメッセージを表示してから削除許可をするのは、
面倒なので、メッセージを表示させないでそのまま、
不要になった作業用シートを削除させているのが、この3行です。

Application.DisplayAlerts = False
でメッセージを表示させなくして、そのままだと、
通常のExcelの処理もメッセージが表示されなくなってしまうので、最後に、

Application.DisplayAlerts = True
で元に戻して終了ですね。

このようなExcel VBAで簡単にシートの並び替えをすることができます。

9/28/2018

Excel Technique_BLOG Categoryに追加しました。2018/09/28

Excel Technique_BLOG Categoryに追加しました

<目次サイト>

このBLOGの記事を、
カテゴリー分けにした【Excel Technique_BLOG Category】に追加しました。


Excel。Excel2010でExcel2003の印刷プレビューを表示する方法
https://infoyandssblog.blogspot.com/2013/09/excelexcel2010excel2003.html


Excel。罫線の斜め線をクイックアクセスツールバーで簡単に書く方法
https://infoyandssblog.blogspot.com/2013/09/excel.html


Excel。Excel2010のピボットテーブルをExcel2003タイプに変える技
https://infoyandssblog.blogspot.com/2013/09/excelexcel2010excel2003_21.html


Excel。一行空きのデータを合計するテクニック。SUM関数とISODD+ROW関数
https://infoyandssblog.blogspot.com/2013/09/excel-sumisoddrow.html



Excel。移動年計のZチャートを作ってみよう。
https://infoyandssblog.blogspot.com/2013/10/excelz.html

9/26/2018

Excel。新しく加わった統計グラフでヒストグラムを作ると便利だけど調整ができない【Histogram】

Excel。新しく加わった統計グラフでヒストグラムを作ると便利だけど調整ができない

<ヒストグラム:FREQUENCY関数>

Office365のExcelに新しく加わった、グラフツールに、
分析でお馴染みの【ヒストグラム】をつくるためのボタンが
リボンに登場したのですが、
このボタンでヒストグラムを作ること自体は簡単になったのですが、
ちょっと困った点が多いようです。

次のデータを使って、ヒストグラムを作る流れを、まずは確認してみましょう。

最初にデータから直接ヒストグラムを作ることができないので、
階級ごとに度数を集計する作業が必要になります。

今回は、E2:E7を範囲選択しておいて、
FREQUENCY関数を使って直接入力していきます。

=FREQUENCY($B$2:$B$26,D2:D7)

配列関数なので、Ctrl + Shift + Enterキーを押すと、
E2:E7に度数が算出されました。

なお、数式は、配列関数になったことにより、
数式の前後に”{ }”というカッコがついて、
{=FREQUENCY($B$2:$B$26,D2:D7)}
という数式に変わっています。

D1:E7を範囲選択して、集合縦棒グラフを作り、
棒グラフを太くすれば、ヒストグラムが完成します。

グラフ自体を作成するのは簡単なのですが、
度数を算出するのが面倒といえば面倒なわけです。

そこで、新しく加わった『統計グラフの挿入』を
使ってヒストグラムを作ってみましょう。

B2:B26のデータを範囲選択します。

そして、挿入タブの統計グラフの挿入をクリックします。

そう、度数を算出しなくても、ヒストグラムを作ることができるのが、
一番のメリットです。

そして、ヒストグラムをクリックすると、ヒストグラムが挿入されました。

しかし、横軸が自動的に、3階級になっていますので、
修正する必要があります。

横軸をダブルクリックするか、横軸をクリックして、
書式タブの選択対象の書式設定をクリックして、
右側に軸の書式設定作業ウィンドウが表示されますので、
軸のオプションを使って調整していきます。

先程の集合縦棒グラフを使ったヒストグラムは、
5000区切りで階級をわけていますので、
「ピンの幅」を5000にすればいいのかと想像すると思いますので、
やってみましょう。

残念ながら、5000の幅にはなりましたが、
~5000とか5000~10000とかに階級をわけてくれません。

データの最小値が3200なので、この最小値から5000の幅なので、
3200~8200までの範囲ということになってしまいました。

このように、自分で好きにコントロールすることができません。

なので、大量のデータをいっぺんにヒストグラムにして見える化させる時に、
この統計グラフの挿入でのヒストグラムを使うのがいいのかなぁ~と。

例えば、次のようなデータ。

度数を求める必要がないので、
一気に次のようなヒストグラムを作ることができます。

このように、ピンの幅を10にするだけで、
ヒストグラムを簡単に作ることができました。

なお、細かいことをやりたい場合には、集合縦棒グラフから作るといいですね。

9/25/2018

Excel関数一覧表にアイテムを追加しました。【function:2018/09/25】

Excel関数一覧表にアイテムを追加しました。

<Excel関数一覧>

「Excelテクニック and MS-Office recommended by PC training」の

目次サイト
Officeソフトのスキルアップサイト」のExcel関数一覧表に
次のアイテムを追加しました。

IMCOS アイエムコサイン
複素数のコサインを算出する

IMTAN アイエムタンジェント
複素数のタンジェントを算出する

IMSEC アイエムセカント
複素数のセカント(正割)を算出する

IMCSC アイエムコセカント
複素数のコセカント(余割)を算出する

IMCOT アイエムコタンジェント
複素数のコタンジェント(余接)を算出する

IMSINH アイエムサインハイパーポリック
複素数の双曲線正弦(ハイパーポリックサイン)を算出する

複素数関係の関数オンパレードですね。

9/24/2018

今週のFacebookページの投稿 2018/09/17-2018/09/23

今週のFacebookページの投稿 2018/09/17-2018/09/23

<Facebookページ>

Facebookページで【書いてみた】ワンポイントです。

9月17日
Excel。
networkdays関数は土日・休日・祝日を除いた日数を算出関数です。

9月18日
Excel。
datedif関数は満年齢などの指定した期間を算出関数です。

9月19日
Excel。phonetic関数はふりがな抽出関数です。

9月20日
Excel。left関数は文字列の左端から抽出関数です。

9月21日
Excel。right関数は文字列の右端から抽出関数です。

9月22日
Excel。
leftb関数は文字列の左端から抽出関数です。
ちなみに半角=1バイトでバイト単位です。

9月23日
Excel。
rightb関数は文字列の右端から抽出関数です。
ちなみに半角=1バイトでバイト単位です。

Excelテクニック and  MS-Office recommended by PC training
https://www.facebook.com/exceltechniqueandmsoffice/

Excelのショートカット一覧はこちらで書いております。
http://yandss.p2.weblife.me/shortcutkey.html

9/23/2018

Excel。20日締めの支払月を算出すると、意外にひっかかってしまう。【Date of payment】

Excel。20日締めの支払月を算出すると、意外にひっかかってしまう。

<MONTH & EDATE関数>

Excelは様々な計算を得意としているアプリケーションですが、
日付や時間については、
ちょっと簡単には算出することが難しいことがあります。

次の表を使って説明していきます。

20日締めだとして、締め月はいつなのか?というのを算出しようとする場合でも、
一つの関数で簡単に算出とはいきません。

当然、MONTH関数で”月”を算出したところ意味がありませんね。
20日より前なのか後なのかでわかれるわけですからね。

それならば、DAY関数を使って、
日にちを算出して、
それを条件としてIF関数を使って算出する方法もありますが、

=IF(DAY(A2)<=20,MONTH(A2),MONTH(A2)+1)

という長い数式になって面倒ですね。

【EDATE関数を使ってみる】

この場合、日付関係の関数で、ほとんど使う機会のない、
「EDATE関数」とMONTH関数を組み合わせることで、
先ほどの数式よりも、簡単に数式を作ることができるのです。

ちなみに、EDATE関数は、指定月後(前)の同日の日にちを算出できる関数です。

D2にEDATE関数ダイアログボックスを表示して確認しておきましょう。

開始日には、A2
月には、1としておきます。
では、OKボタンをクリックします。

D2の数式は、
=EDATE(A2,1)

算出された結果はシリアル値で表示されてしまうので、
表示形式を日付に変更しましょう。

表示が日付になりましたね。2018/9/4と算出されています。

たったこれだけのことなので、
あまり使うことがない関数のEDATE関数ですが、

MONTH関数と一緒に使って数式をつくると、
EDATE関数ってこんなことにも使えるだなぁ~と。

では、C2をクリックして、MONTH関数ダイアログボックスを表示します。

シリアル値には、EDATE関数をネストします。

ポイントは、
EDATE関数の開始日の引数にマイナス20を追加するのを
忘れずに設定しておきましょう。

あとは、OKボタンをクリックします。

C2の数式は、
=MONTH(EDATE(A2-20,1))
となっています。

では、数式をコピーしておきましょう。

これで、締め月はいつなのかを算出することができました。
なぜ、マイナス20したのかも、確認しておきましょう。

D2に購入日から-20した日付を算出してみます。

このように算出されるわけですが、
この方法を使えば、仮に10日締めや25日締めの場合は、
10を減算するか、25を減算すればいいわけなので、
現場に合わせて調整もしやすいと思います。

日付系の関数は、なかなか、
応用する使い方が限られるところがありますが、
異なる関数と組み合せによって、
今回のように数式をコンパクトにすることができることもありますので、
機会があれば、様々な関数を組み合わせてみると、
色々発見があるかもしれませんね。

9/22/2018

Officeソフトのスキルアップに追加しました。2018/09/22

Officeソフトのスキルアップに追加しました。

<目次サイト>

このBLOGの記事を、
目次サイトの【Officeソフトのスキルアップ】に追加しました。


Excel。誕生月の方を抽出したリストを作りたいけどどうしたらいい?というご質問
https://infoyandssblog.blogspot.com/2015/08/excelmonth.html


Excel。判定数が多い時は、IF関数よりもVLOOKUP関数のTRUEを使うほうが楽
https://infoyandssblog.blogspot.com/2015/08/excelvlookupifvlookuptrue.html


Excel。氏名のフリガナを苗字と名前に分けて表示をしたい
https://infoyandssblog.blogspot.com/2015/08/excelphonetic.html


Excel。数値の間に【/】をいれて、日付にしたい時の方法をご紹介
https://infoyandssblog.blogspot.com/2015/08/excelslash_13.html


Excel。入力されている日付の”/”(スラッシュ)をなくして数値化したい。
https://infoyandssblog.blogspot.com/2015/08/excelslash.html

9/20/2018

Excel。やっぱり大きなデータはピボットテーブルで、順位も構成比も算出できる。【Pivot table】

Excel。やっぱり大きなデータはピボットテーブルで、順位も構成比も算出できる。

<ピボットテーブル>

関数をはじめとする数式を知ると作業効率が改善することも多くありますが、
やっぱりデータが多くなってしまうと、範囲選択するだけでも、
面倒なことがあります。

そこでおなじみの【ピボットテーブル】を使うと作業効率が改善します。

では、次のデータでピボットテーブルを使って集計をしてみます。

データ内の任意のセルをクリックして、
挿入タブの「ピボットテーブル」をクリックします。

ピボットテーブルの作成ダイアログボックスが表示されますので、
そのままOKボタンをクリックします。

すると、新しいシートが挿入されてピボットテーブルが使えるようになります。

今回は、旅行名ごとの人数を集計した資料を作りたいとします。

ピボットテーブルの操作自体は簡単なのですが、
一番大切なのは、「どのような資料がほしいのか?見たいのか?」
ということがポイントになります。

それに合わせて、必要なフィールドを選択する必要があります。

右側にある、
ピボットテーブルのフィールドのフィールド名にチェックマークをつけるか、
フィールド名をドラッグアンドドロップして行や列のボックスに
設定してもOKですね。

今回は、行に、「旅行名」。
列に、「人数」を設定しました。

これで、あっという間に左側に集計表が表示されました。
これが、ピボットテーブルですね。

フィルターボタンがありますので、抽出したり、
並び替えたりすることも出来ます。

A3に”行ラベル”という文字やB3に”合計/人数”という文字がありますが、
変更するには、いつものように、入力すればいいだけです。

ただし、値フィールド(集計したフィールド)の名前は、
他で使用しているフィールド名と同じものは使えません。

【構成比を算出してみよう】

B列の人数の構成比を算出してみます。

ピボットテーブルの場合は、
集計したいフィールドを値フィールドに設定して計算方法を変えていく
という手法を取ります。

まず、「ピボットテーブルのフィールド」作業ウィンドウの
”人数”というフィールド名を値ボックスにドラッグアンドドロップ

ピボットテーブルはこのように変わりました。

当然、合計が算出されているだけなので、
これを変更して構成比に変えていきます。

ピボットテーブルツールの分析タブにある、
「フィールドの設定」をクリックすると、
値フィールドの設定ダイアログボックスが表示されます。

名前の指定を、「構成比」
計算の種類タブに変更して、
計算の種類を「列集計に対する比率」にしてOKボタンをクリックします。

このように絶対参照の設定を忘れたとか気にしないで簡単に、
構成比を算出することができましたね。

同じ方法で、順位も算出することができます。

値ボックスに、新しく人数フィールドをドラッグアンドドロップして、値フィールドの設定ダイアログボックスを表示します。
変わる場所は、計算の種類。
ここを「降順での順位」にしてOKボタンをクリックします。

このように順位も簡単に算出することができます。

大きなデータから資料を作る時には、
ピボットテーブルという方法もあるということを知っておくと、
作成する時の幅が広がりそうですね。

9/19/2018

Excel Technique_BLOG Categoryに追加しました。2018/09/19

Excel Technique_BLOG Categoryに追加しました

<目次サイト>

このBLOGの記事を、
カテゴリー分けにした【Excel Technique_BLOG Category】に追加しました。

Excel。PHONETIC関数を使って郵便番号入力を省略する方法
https://infoyandssblog.blogspot.com/2013/08/excelphonetic.html


Excel。住所から都道府県を抜き出す方法。IF+MID+LEFT関数
https://infoyandssblog.blogspot.com/2013/09/excel-ifmidleft.html


Excel。氏名から苗字を抽出する方法。LEFT+FIND関数
https://infoyandssblog.blogspot.com/2013/09/excel-leftfind.html


Excel。氏名から名前を抽出する方法。RIGHT+LEN+FIND関数
https://infoyandssblog.blogspot.com/2013/09/excelrightlenfind.html

Excel。空白の場合エラーを返さない方法。IF+VLOOKUP関数編
https://infoyandssblog.blogspot.com/2013/09/excel-ifvlookup.html