「マイクロソフトエクセル」カテゴリーアーカイブ

112233のような連番

1,2,3とか2,4,6などの連番はエクセルのオートフィルを使用すれば簡単に作成できますが、1,1,2,2,3,3,とか1,1,1,2,2,2,3,3,3のような同じ数字を複数回繰り返すような連番はオートフィルでは作成できません。

autofill4

いろいろと最初の選択方法を変えてみましたが望むような連番をオートフィルでは作成できませんでした。

autofill4_1

代替案として数式で解決してみます。1,1,2,2,3,3のように2個ずつ繰り返す場合は初めの2個だけ手入力します。セルA1に1、セルA2に1、と入力します。次にセルA3に=A1+1と最初のセルに1を加えるという式を入力します。あとはオートフィルで数式をコピーします。

autofill4_2

必要であれば数式のところをコピーして同じ場所に値として貼り付けておけばよいかと思います。

オートフィル3

数字と文字の組み合わせ

オートフィルは2つのセルの値の差を読み取って、以降のセルにその差を加えていくことで自動で連番を振ることができます。(1行目2行目の2つのセルを選択してオートフィルを行った例)オートフィル

autofill2_2

またユーザー設定リストにあるものは1つのセルにリスト内の値を入力しオートフィルを実行するとユーザー設定リストに従ってリストの値が順に表示されます。オートフィル2

autofill2_3

数字と文字を入力し物にオートフィルをすると数字だけが1つずつ増加します。(入力するセルは1つだけで1つのセルを選択してオートフィルを実行した時)

autofill3

数字は算用数字でないとうまくいきません。漢数字は単なる文字とみなされてしまいます。

また、ユーザー設定リストにある第1四半期、第2四半期…と1月、2月…はリストの順番で巡回します。

autofill3_1

これはユーザー設定リストに登録されているのでうまく行くだけです。1日と入力してオートフィルをかけても31日の次が1日戻るわけではありません。

autofill3_2

月日のオートフィル

では、4月25日(普通の日付)を入力しオートフィルを実行すればどうなるでしょうか?4月はユーザー設定リストにあるので5月、6月と増えていくのでしょうか。autofill3_3

期待通り?きちんと1日ずつ増加してくれました。しかも月末処理がなされ自動で5月1日になってくれました。これは4月25日と入力し確定したした時点で2016年(本年)の4月25日と認識されているからです。数式バーを見ると2016/4/25と表示されています。

エクセルが日付形式と認識すればオートフィルは1日単位で計算してくれるようです。

 

オートフィル2

曜日などをオートフィルで入力

オートフィルを参照してください。連番を入れるとき初めの2つを指定することで後はその差を自動的に追加していってくれます。1,2とセルA1とA2に入力したものをオートフィル実行してみます。

autofill2

1から2に1増加していますのでそれ以降1ずつ増加させて3,4,5と値が変化します。同様に2,4と入力してからオートフィルを実行すれば6,8,10となります。1,3なら5,7,9となっていきます。

autofill2_2

それ以外にも文字でオートフィルが効きます。

autofill2_3

これらは数字の時のように2つのセルの差を取りませんので1文字だけ入力すれば大丈夫です。必ず月や睦月などで始める必要はありません。卯月から始めても卯月、皐月、水無月となってくれます。

これらはでたらめに入力してもダメです。エクセルの登録されているリストがありますのでリスト以外の物はオートフィルは効きません。

autofill2_4

このユーザー設定リストにあるものが使えます。

autofill2_5

 

複数行のデータを1行にする

下の行の値を右に移動する

状況をうまく説明できませんが、どこかから持ってきたデータが下の様なの状態だった場合このままでは、不都合なことも多いでしょう。

linrup

3行ワンセットで1行目から

商品番号
商品名
価格

となっているものが複数セットあります。エクセルでデータベースのように商品番号から商品名や価格などを引っ張り出すために利用するにはこの形では使いにくくて仕方ありませ。

1行に1データの形で

A列 商品番号
B列 商品名
C列 価格

linrup_1

のように変更したいです。

関数か何かで1回でうまくいくものがれば良いのですが、無いようですので、効率の良い手作業で処理したいと思います。

まず元の表のB列に1,2,3 1,2,3と商品番号は1、商品名は2、価格は3となるように番号を振ってみます。

まずは各セルに1,2,3と入力し入力した3つのセルをまとめて選択してから右下のフィルハンドルをダブルクリックでB列に数値を埋めます。

linrup_2

このままではただの連番になってしまうのでB列のコピーされたセルの一番下のセルの右端のオートフィルのオプションをクリックしてセルのコピーをクリックします。

linrup_3

元が1,2,3と入力したものなので1,2,3の繰り返しになりました。linrup_4

次にC1のセルにはA2のセルの値が来るように数式を入力します。

linrup_5

同様にD1のセルにはA3のセルの値が表示されるように式を入れます。linrup_6

そしてセルC1とセルD1の式をフィルハンドルでコピーします。そうすると3行ごとに必要なデータが現れます。2行目、3行目などは意味のないデータです。このとき必要な行はB列で1の値が入った行になります。linrup_7

そこでB列を基準に昇順で並べ替えを行いたいのですがC列とd列のデータは1行下のA列の値、2行下のA列の値になっているので並べ替えをすると再計算されてデーターの内容が変更されてしまいます。

C列とD列を選択しコピーします。

linrup_8

セルC1を選択し右クリックし貼り付けのオプションで値貼り付けを選択します。linrup_9

これでC列D列は数式ではなく値そのものになりました。

linrup_10

これで並べ替えを行ってもC列D列は変更されなくなりました。セルB1を選択し並べ替え昇順をクリックします。

linrup_11

1行目から必要なデータだけ(後でB列は削除してください)が並びました。下の方にある不要なを削除したら出来上がりです。必要により1行目に行を挿入し見出しセルを作成してください。linrup_12

意外と面倒な気がしますが、データが沢山あるときは便利ですし、完全手作業によるセルの移動ミスも防げます。理屈を知ってしまえばいつでも使えます。ぜひ活用してください。

 

セルに数式を表示する

アドレスバーではなくセルに数式を表示する

数式が入っているセルを選択すれば数式バーに数式が表示されます。これはこれで当たり前というか、便利と言おうかわかりませんが数式を確認するときなどよく利用します。数式バーで数式を変更することももちろん可能です。

shiki

エクセルの表を再利用するときなどどのセルに計算式が入っているか確認せずにデータを消してしまうとデータのつもりが数式だった!となってしまうかもしれません。ほとんどの場合、式が入っているかどうかは列ごとにデータの列、計算式の列となっているので横に横にアクティブセルを移動して数式バーを見ていればわかるのですが、一覧でわかる方法があります。

数式タブのワークシート分析の数式の表示をクリックします。すると数式の入っているセルは数式がそのまま表示されます。もちろん数式の編集もデータの入力、削除も行えます。

再度数式の表示をクリックすると戻ります。

shiki_

数式の表示のショートカットキーはCtrlキー+Shiftキー+@キーの3つ同時押しです。

他には、任意のセルの数式を表示する関数もあります。

FORMULATEXT 関数
数式を文字列として返します。

shiki_1

わかったようなわからないようなややこしい図ですが、セルG3には数式バーにあるように=FORMULATEXT(F3)という数式が入っておりFORMULATEXT関数の結果としてセルF3に入力されている=SUM(B3:E3)という数式が文字列として表示されています。

 

文字列の結合

以前エクセル2013の新機能ということでフラッシュフィルをご紹介しました。その中で文字列の結合を式を使わなくても、エクセルが予測して勝手に文字列を結合してくれるということでご紹介しました。

文字列の結合をサラッと流してしまったのでもう一度改めてご紹介します。

例えばお名前を姓と名を別のセルに入力してあるのを1つのセルにまとめる場合は

=姓のセル&名のセル

のように&を使う方法があります。

concate

別の方法としてconcatenate関数というのがあります。

concate_1

この関数も文字列結合で&とまったく同じように使えますが、引数をコンマ(舌がはねている桁区切りに使用する記号)で区切る必要があります。ですから注意していただきたいのはオートサムなどと同じようにドラッグして範囲選択をすると(コロンで初めのセルと最後のセルを指定する)エラーになってしまいます。

concate_2

姓と名の間にスペースがほしい場合はどちらの場合でもダブルクォーテーションでスペースを囲んであげたものを挿入すればOKです。

=A2&” “&B2concate_3

=CONCATENATE(A3,” “,B3) concate_4

挿入できるは空白だけではなく任意の文字をしてしてあげることも可能です。

=A4&”の”&B4&”ちゃん”concate_5

また、結合できるのは2つのセルだけではなく、エクセル2013のヘルプでは255 個の項目、合計 8,192 文字を指定できますとあります。

セルの塗りつぶし色を取得する

エクセルにはセルの塗りつぶしがあります。(以下図はexcel2013)

cellcolor

塗りつぶしたセルと同じ色は簡単に取得できます。塗率されたセルを選択して、ホームタブのフォントの塗りつぶしの色の隣の下向き三角▼をクリックします。

cellcolor_1

それだけで塗りつぶしに設定した色が選択されていますので同じ色を使ったり、同じでない色を使ったりできます。

また、カラーパレットから選択された以外の色(その他の色で選択した場合など)や、別のアプリで同じ色が必要な場合、カラーコード(RGBかHSL10進数)を取得できます。

任意の色で塗りつぶされたセルを選択します。ホームタブのフォントの塗りつぶしの色の隣の下向き三角▼をクリックします。最近使用した色にでていますが、色の値を取得するためその他の色をクリックします。

cellcolor_2

色の設定のダイアログボックスが開きます。ユーザー設定タブをクリックします。カラーモデルでRGBかHSLを選択します。下に値が表示されますのでメモリます。

cellcolor_3

RGBは16進数で使われることが多いのですが、ここでは10進数です。必要であれば変換してください。ウィンドウズ付属の電卓でプログラマーを選択すれば簡単に変換可能です。

 

単位があっても計算できる

ちょっと判りづらいタイトルですが、エクセルでどうしても表の中に単位を表示しておきたい時、数値と単位を別のセルに分けることがあるかもしれません。

tanni

おとこのこ、おんなのこになっているのだから単位は人で間違いないと思うのですがお弁当の仕出しだと人前とか制服の注文だと、着になったりすることもあるかもなのでどうしてもそれぞれ人という単位がいる、欲しい、前回がそうなので、上役が言ってるので。などいろいろな理由があるのでしょう。

いきなりセルに9人とか入れてしまうと文字列になってしまうので計算できなくなってしまいます。仕方なく単位の人を別のセルにして、見出しをセル結合して中央揃えにして、罫線を消して表を作るかもしれません。

こんなときは、セルの表示形式で#(ハッシュ)を利用すれば便利です。

順番は後でも先でも構いません。まずは単位を無視して表を作成しておきます。

tanni_1

圧倒的に早く簡単に作成できますね。

次に人と表示したいセルを範囲選択しホームタブの数値のプルダウンからその他の表示形式を選択します。

tanni_2

セルの書式設定のダイアログボックスが表示されます。

tanni_3

種類の下のG/標準を消してしまい、#人と入力しなおします。#は半角英数で入力してください。全角ではだめです。サンプルに数値+人と表示されているのを確認しOKのボタンをクリックします。

tanni_4

これで、単位が表示され、しかも、オートサムの計算もされています。数式バーを見ていただければ入力されているのは数値です。ただ、表示上後ろに人がついているだけです。

tanni_5

#(ハッシュ)は数値を表します。今回は#だけですので整数を表します。少数は四捨五入されて表示されます。

また、値が入っていない場合は人も表示されずただの空白セルです。

あとで見た時にちょっと見づらいので個人的には好きではないですが、G/標準を消さずにそのすぐ後ろに人と文字を付け加えることも可能です。むしろこちららの方が汎用性が高いですね。

tanni_6

人のところを変更して、もちろん#の前でも構いませんし、2文字以上でも構いませんので色々と使ってみてください。

時間計算2(時間計算が24時間を超えた場合)

時間計算1で簡単な時間計算をしましたが、時間計算が24時間を超えた場合をご説明します。

時間計算1で作成したものをオートフィルでうまくコピーしてから退勤時間を修正したものです。これに、勤務時間の合計を求めようと思いsum オートサムを入れてみました。

hour_9ところがどうも計算結果が思ったものにならないようです。

hour_1058時間以上のはずなのですが、10:35と表示されています。実際にはきちんと合計されているのですが、表示方法が希望したものと違うだけです。

ホームタブの数値のプルダウンからその他の表示形式を選択します。

hour_11 セルの書式設定のダイアログが表示さすでに時刻が選択されています。hour_12

左の分類の一番下のユーザー定義をクリックします。種類の中を書き換えます。当初は、h:mm;@と表示されているはずです。(@は無くてもかまいません)これのhを角かっこでかここみます。必ず日本語入力をオフにして半角英数で入力してください。[h]とすることで24時間を超えた分も表示されるようになります。サンプルの表示を確認したらOKボタンをクリックします。hour_13これで思ったような累積の勤務時間の表示が出来ました。

hour_14では、夜勤などで日付が変わった場合はきちんと計算されるでしょうか

最後の行のセルA8の出勤時間を19:00にして、退社時間を06:00にするとどうなるでしょうか?計算式的にはマイナスとなり、マイナスの時間はエラー表示となります。

hour_15正解は翌日の午前6時は30時として30:00と入力します。

hour_18

するときちんと計算されます。入力したセルは24時間を超えた分しか表示されませんので6:00と表示されます。hour_19

数式バーを見ればわかるのですが、24時間を超えた時刻を入力した場合、1900/1/1 6:00:00のように1900年の1月1日の時刻になります。これはエクセルが時間をシリアル値という物で管理しており日付の伴わない時刻(24時間未満)は1900年の1月0日扱いしているためです。日付は1900年の1月1日を起算日として1日を1として累積して管理しています。

0を表示しない

エクセルで計算するときに結果が0になった場合はもちろん0と表示すればいいのですが、計算に使用する値が入っていない場合も0と表示されてしまいます。

zero

計算式は入っているが価格、数量が入っていない場合ですね。0で間違っているわけではないのでしょうが、気になる人は気になるところでしょうか。

よくあるのがIF関数で価格か数量が空白だったら計算しないで空白にして、両方とも空白でなければ計算するというやり方です。

zero_1

=IF(OR(B3=””,C3=””),””,B3*C3)

のように”(ダブルクォテーション)の2つ連続で空白としています。

私自身もよくやりますが、難点があります。この計算式で出た答えを再度どこかのセルで参照する場合です。合計の場合は途中のセルに文字が入っていても無視してくれますがその他の計算では無視してくれないことがあります。

zero_2

E 列に税込み価格を計算してみました。108%を掛けて少数を切り捨てるTRUNC関数を使いました。

zero_3

そうすると#value!というエラーが表示されて今いました。セルD6は空白セルに見えますが実際はIF関数によって””が入っていますので掛け算が出来ませんということです。

空白を知るためにB3=””ということが出来るのに、””を書き込むと空白セルでなくなってしまいます。

zero_4

IF文を使わずに単純に0と表示しておけばエラーは出ませんし、計算式も数値も何も入っていない空白セルもエラーが表示されません。

で、これを回避するためにD列の値が””かどうか確認するIF文を使うことになります。

=IF(D3=””,””,TRUNC(D3*$E$1))

これもありですか。やらないことはないですが何か腑に落ちない感じがしないわけではありません。

値が0の時は何も表示しないという表示形式を使っても同じことが出来ます。

先ほどからのIF関数を使うのをやめて0が表示されている状態に戻します(何もしてない状態です)。

zero_5

次に0を表示してほしくないセルを選択し、ホームタブの数値のプルダウンからその他の表示形式を選択します。

zero_7

セルの書式設定が表示されますので分類の一番下のユーザ定義をクリックします。

zero_8

通常なにもセルの表示形式設定されていない場合は種類のすぐ下にG/標準と表示されています。

zero_9

このG/標準を

G/標準;G/標準;

と書き換えます。G/標準の後ろにセミコロン(;)を入力し再度G/標準を入れてまた後ろにセミコロン(;)を入力します。

zero_10

これで値が0の時は何も表示されなくなります。

zero_11

エクセルのセルの表示形式では4つの状態をセミコロン(;)を使って1つのセルに同時に指定可能です。

正の値;負の値;0;文字列

となります。G/標準;G/標準;は正の値は標準、負の値も標準、0の時は何も表示しないとなります。

オプションからゼロ値のセルにゼロを表示するのチェックを外して、0を表示しないという設定もできますが、指定したシートすべての0が表示されなくなるので注意してください。
zero_12