11/17/2019

今週のFacebookページの投稿 2019/11/11-2019/11/17

今週のFacebookページの投稿 2019/11/11-2019/11/17

<Facebookページ>

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

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

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

11月13日
Excel。len関数は文字数を算出関数です。

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

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

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

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

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

11/15/2019

Excel。ゼロ付連番を楽に作りたいならExcel VBAでやっちゃいましょう。【Serial number】

Excel。ゼロ付連番を楽に作りたいならExcel VBAでやっちゃいましょう。

<Excel VBA>

通し番号を1から連番で作るとしたらオートフィルを使った連続データという方法がありますが、件数が少なければ、オートフィルでもいいのですが、データの件数が増えてしまうと、少々面倒になってしまいます。

また、通し番号が、「001」というような、いわゆる【ゼロ付数字】で表示したい場合は、表示形式のユーザー定義を設定してあげる必要が発生します。

些細な処理かもしれませんが、この処理が比較的頻繁に発生するのであれば、Excel VBAでマクロを作って実行するのが、意外に楽だと思います。

そこで、今回は、3つのパターンを確認してきましょう。


A列は、通常の通し番号です。
B列は、ゼロ付連番ですが、文字型のゼロ付連番です。
C列は、ゼロ付連番ですが、表示形式を使って、数値に「0」が表示されるようにしています。

Sub 零つき連番()
    Dim i As Integer
    ‘A列
    For i = 2 To 11
        Cells(i, "a") = i - 1
    Next i
End Sub
実行してみましょう。

数行の構文で完成しました。
簡単に説明すると、
For To Next文で繰り返します。
今回は、10件としたいので、2~11としています。

Cells(i, "a") = i - 1

説明が不要なぐらい簡単な一文ですね。A2に1を代入する。
これを繰り返しているわけですね。

このようなプログラムを用意しておくだけでも、作業効率は改善することができますね。実際処理してみると、オートフィルを使って算出するよりも早いと思われます。

続いてB列
Sub 零つき連番()
    Dim i As Integer
    ‘A列
    For i = 2 To 11
        Cells(i, "a") = i - 1

    ‘B列
     Cells(i, "b").NumberFormat = "@"
     Cells(i, "b") = Right("00" & i - 1, 3)
    Next i

End Sub

実行して確認してみましょう。

ゼロ付連番の文字列型で算出することができました。
構文を説明します。
Cells(i, "b").NumberFormat = "@"
NumberFormatプロパティは、表示形式を設定することができる、プロパティです。

今回は、文字列型にしたかったので、= "@"としています。
これで、このセルに入るデータは文字列型になるようにしています。

そして、次の行で、ゼロ付にしています。
Cells(i, "b") = Right("00" & i - 1, 3)

Rigjt関数を使っているのかというと、数値の前に”00”を付けると、1は、001となるのですが、10は0010となってしまうので、右側から3文字分を残すようにしています。

なお当然のことながら、表示形式を設定する行が先にしなければいけません。

最後は、ゼロ付連番ですが、こちらは、数値。

では構文を確認してみましょう。
Sub 零つき連番()
    Dim i As Integer
    ‘A列
    For i = 2 To 11
        Cells(i, "a") = i - 1

    ‘B列
     Cells(i, "b").NumberFormat = "@"
     Cells(i, "b") = Right("00" & i - 1, 3)

    ‘C列
     Cells(i, "c").NumberFormatLocal = "000"
     Cells(i, "c") = i - 1

    Next i
End Sub

B列は文字列型にしましたが、今回は、数値型にしています。
Cells(i, "c").NumberFormatLocal = "000"
“000”は。表示形式のユーザー定義でお馴染みの形ですね。

このように、簡単な構文なので、ゼロ付連番を実務で高い頻度で作る場合は、用意しておくと便利ですよ。

11/14/2019

Excel。グラフの復習。自動的に平均値の線~ABC分析パレート図【Graph】

Excel。グラフの復習。バブルチャート~ABC分析パレート図

<グラフ>

Excelのグラフは、用途に合わせて様々なグラフを作ることができます。
今回は、グラフの復習ということ、4つをピックアップ

・Excel。縦棒グラフに自動的に平均値の線を引くにはどうしたらいい?
・Excel。お客の年齢階層別ピラミッドグラフをつくってみる。
・Excel2013以降。おすすめグラフで、グラフを作るのが簡単になりすぎ。ピラミッドはこう作ります。
・Excel。ABC分析パレート図をつくってみよう

Excel。縦棒グラフに自動的に平均値の線を引くにはどうしたらいい?
平均線付縦棒グラフ

集合縦棒グラフがあって、そこに平均値の線を引きたいのだけど、印刷なら手で線をひいちゃうけど、Excel上だと、図形の線で描いても数値とずれているように見えるし、何かいい方法はありませんか?

<続きはこちら>
Excel。縦棒グラフに自動的に平均値の線を引くにはどうしたらいい?
https://infoyandssblog.blogspot.com/2015/03/excelgraph.html


Excel。お客の年齢階層別ピラミッドグラフをつくってみる。
ピラミッドグラフ

年齢別の人口分布などに使われるグラフの事ですね。それを今回どうやって作ったらいいのでしょうか?

<続きはこちら>
Excel。お客の年齢階層別ピラミッドグラフをつくってみる。
https://infoyandssblog.blogspot.com/2015/03/excelgraph_25.html


Excel2013以降。おすすめグラフで、グラフを作るのが簡単になりすぎ。ピラミッドはこう作ります。

【おすすめグラフ】で縦棒グラフ作成して、縦棒グラフから消えてしまった、ピラミッドグラフの作り方を紹介しようと思います。

<続きはこちら>
Excel2013以降。おすすめグラフで、グラフを作るのが簡単になりすぎ。ピラミッドはこう作ります。
https://infoyandssblog.blogspot.com/2015/04/excel2013graph.html


Excel。ABC分析パレート図をつくってみよう
ABC分析パレート図

パレート図を作ってみようと思います。

<続きはこちら>
Excel。ABC分析パレート図をつくってみよう
https://infoyandssblog.blogspot.com/2015/04/excel2013excel2013abc.html

11/12/2019

Excel。Office Insiderで追加したXLOOKUP関数は思考の刷新を起こすかも!【XLOOKUP】

Excel。Office Insiderで追加したXLOOKUP関数は思考の刷新を起こすかも!

<XLOOKUP関数>

Office365のOffice Insiderで追加された新しい関数【XLOOKUP関数】。

今までのお馴染みのVLOOKUP関数やHLOOKUP関数をより、わかりやすく、より使いやすくしたといえるかもしれません。

いずれ、正式にExcelに搭載されるだろう、XLOOKUP関数を少し早いですが、現時点の状態でご紹介します。

次のような表があります。

2行目のデータは、氏名を検索値として、その該当するデータを抽出のに、VLOOKUP関数を使って算出しています。

B2のセルには、
=VLOOKUP($A2,$A$4:$F$16,2,FALSE)
という数式を設定してあります。

検索値が、$A2と複合参照にしているのは、オートフィルを使って数式をコピーしても大丈夫なようにしていています。

範囲には、$A$4:$F$16と絶対参照を忘れると、オートフィルを使って数式をコピーときに、範囲がズレてしまうので、忘れないようにしないといけませんね。

列番号には、「2」。これは、範囲の左から何列目のデータを抽出するのかを指示する数値ですね。

検索方法は、「FALSE」。完全一致ですね。省略しちゃうと、近似値になってしまうので、忘れずに設定する必要がありますね。

算出後は、オートフィルを使って数式をコピーしますが、列番号を修正しないといけませんね。
修正しないようにする場合には、COLUMN関数を使ったりして対応させる必要があります。


このようにVLOOKUP関数は、覚えると大したことはないのですが、慣れないと苦労する関数ですし、複数ある場合は修正するのも面倒な関数です。

ところが、【XLOOKUP関数】は、これらの考え方を大きく刷新しています。
『革命的』といってもいいすぎでないかもしれません。

では、【XLOOKUP関数】を使って算出してみましょう。

B2をクリックして、XLOOKUP関数を設定してきます。

検索値には、A2。これは、VLOOKUP関数と同じです。

検索範囲ですが、A5:A13。ここがちがいますよね。VLOOKUP関数では、範囲は、該当するリスト全体だったのですが、検索値がある列を選択します。

戻り配列ですが、抽出するデータを範囲選択しています。
絶対参照は?と思うかもしれませんが、不要です。

一致モードですが、「0」を入力していますが、完全一致ならば、「0」。
ちなみに省略可能です。
XLOOKUP関数は、近似値でなくて、完全一致が基本設定なので、
省略しても完全一致で検索してくれます。

少し説明をすると、
「0」は完全一致
「-1」は見つからないとき次に小さい値を検索します
「1」は見つからないとき次に大きい値を検索します
「2」はワイルドカードを使って検索したい
このように、4パターンにわかれました。

検索モードは、便利かもしれません。
ここも省略が可能ですが、通常は、「1」の先頭から末尾へで設定します。

検索モードも、補足すると、
「1」は先頭から末尾へ検索します。
「-1」は末尾から先頭へ検索します。
「2」はバイナリ検索(昇順で並べられているとき)
「-2」はバイナリ検索(降順で並べられているとき)
「+」と「-」の違いですが、複数あった場合、どっちのデータを抽出するの?ということです。

では、設定が終わったら、OKボタンをクリックしてみましょう。

なんと、オートフィルを使って数式をコピーしたわけでもないのに、F列まで算出されていますよね。
これは、『スピル』という、これまた新しい機能によって、簡単に算出されたわけです。

なお、B2の数式は、
=XLOOKUP(A2,A5:A13,B5:F13,0,1)

正式実装される日は、まだかもしれませんが、早めに知っておくほうがいい機能がありそうです。

11/11/2019

今週のFacebookページの投稿 2019/11/04-2019/11/10

今週のFacebookページの投稿 2019/11/04-2019/11/10

<Facebookページ>

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


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

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

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

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

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

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

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

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

11/09/2019

Excel。1つのシートのデータを、各シートの同じセルに転記するには【Posting】

Excel。1つのシートのデータを、各シートの同じセルに転記するには

<INDIRECT+SHEET関数>

簡単そうな処理でも繰り返して設定するのは、結構面倒なわけです。

そこでExcel VBAを使ってとか考えるのですが、1つのシートにあるデータを、各シートの同じセルに転記することだったら、Excel VBAでマクロを作るよりも簡単に設定することができます。

1枚目のシート「売上目標」には次の表が用意されています。

そして、新宿から川崎までの各シートには、次のような表が用意されています。

やりたいことは、例えば、シート「売上目標」のC2にある新宿店の売上目標の数値をシート「新宿」のB2に転記したいわけです。

処理的には簡単ですが、繰り返すと面倒なパターンですね。
例えば、シート「新宿」の場合だと、B2をクリックして、

=売上目標!C2
と設定するだけの、単なる『セル参照』にすぎません。

ところが、オートフィルを使って数式をコピーできるならばいいのですが、各シートの同じセルにそれぞれの店舗の売上目標を転記したいわけです。

そこで、Excel2013から登場したSHEET関数とINDIRECT関数を使うことで簡単に転記することができます。

最初に行うのは、転記したいシートを作業グループ(選択)します。

転記したいセルをクリックします。今回はB2をクリックして、数式を設定していきます。

INDIRECT関数ダイアログボックスを表示すると手入力があるので、直接数式を設定したほうが楽だと思います。

B2の数式は、
=INDIRECT("売上目標!c"&SHEET())
それでは各シートを確認してみましょう。

たった、これだけです。

Excel VBAとかでマクロをつくらないと…なんて思いがちですが、数式で簡単に算出できる方法も知っているといいですよね。

さて、数式の説明をしておきましょう。
=INDIRECT("売上目標!c"&SHEET())

INDIRECT関数はセル参照を表す文字列を間接的に参照することができる関数です。

では間接的に参照するための引数ですが、
"売上目標!c"&SHEET()
シート「売上目標」のCまでがダブルコーテーションで囲んでいます。

そして、「&」で文字結合しているのが、SHEET()。

SHEET関数は、Excel2013で登場した新しい関数です。

このSHEET関数は、ブックの左から何枚目にあるのかがわかる関数なので、左から2枚目にある、シート「新宿」は2と算出される仕組みです。

なので、シート「新宿」の場合、
"売上目標!c"&SHEET()は、売上目標!C2

ということになり、INDIRECT関数を使うことで、
=売上目標!C2
という数式を作ることができたわけです。

なので、シートの順番が非常に重要で、新宿と渋谷のシート入れ替えてしまうと、数値も入れ替わってしまうので、注意が必要です。

11/08/2019

Excel Technique_BLOG Categoryに追加しました。2019/11/08

Excel Technique_BLOG Categoryに追加しました。

<目次サイト>

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

Excel。折れ線グラフでランキング推移グラフ作る時のポイント
ランキング推移グラフ

折れ線グラフを使ってランキング推移グラフをご紹介しようと思います。
実は、普通に折れ線グラフを作ると、出来ないので、ちょっとしたポイントを知っておくといいというケースです。

<続きはこちら>
Excel。折れ線グラフでランキング推移グラフ作る時のポイント
https://infoyandssblog.blogspot.com/2014/12/excel.html


Excel。セル内の文字が含まれているかのチェックは簡単に出来ません。

セルの文字列に該当する文字が含まれているのかチェックしたいので、IF関数を使ってみたんだけど、うまくいかない

<続きはこちら>
Excel。セル内の文字が含まれているかのチェックは簡単に出来ません。IF関数+COUNTIF関数
https://infoyandssblog.blogspot.com/2014/12/excel_30.html
https://infoyandssblog.blogspot.com/2015/01/excel.html

Excel。DATEDIF関数を使って、勤続年数を求めると何かがおかしい?

4/1まで勤務しないと1年契約にならないのでしょうか?
これは、会社さんによってルールがあるかと思いますが、イメージとしては、4/1~3/31で勤続年数には1という結果になってほしい訳です。

<続きはこちら>
Excel。DATEDIF関数を使って、勤続年数を求めると何かがおかしい?
https://infoyandssblog.blogspot.com/2015/01/exceldatedif.html