Excel2016 で、あるセルの内容によって別のセルに色を付ける。

(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1808(ビルド10730.20102)

H.M さん。

Excel2016 で、あるセルの内容によって別のセルに色を付けるやり方です。

ココログのアクセス解析を見ると、この類の情報を求めてうちのブログがぽろぽろと見られています。

「条件付き書式 別のセル」などのキーワードの組み合わせで。

そう思いながら、あらためて自分のブログを見返してみると、Excel2016 で「あるセルの内容によって別のセルに色を付ける」については書いてないのでまとめてみました。

といっても、Excel2016 になっても特別なことはなくて、旧バージョンと同じなんですけどね。条件付き書式というものです。

↓こういうことをしようというわけで……。

00joukentukisyosiki01

C列が「合格」ならA列のセルに色を付けています。

条件付き書式を設定する。

画像の場合は次のような手順になります。

1. 条件付き書式を設定したい範囲――図では A2 から A5 まで――を選択
2. 「ホーム」タブの「条件付き書式」から「新しいルール」を選択
3. 「ルールの種類を選択してください」」の欄で、「数式を使用して、書式設定するセルを決定」を選択
4.「次の数式を満たす場合に値を書式設定」の欄に以下の数式を入力
= $C2="合格"

01joukentukisyosiki_susiki

5. 「書式」ボタンをクリック
6. 「セルの書式設定」の画面が表示されるので、「塗りつぶし」タブをクリック
7. 任意の背景色を選択して、OK をクリック

これで、C列の値が「合格」の場合、A列のセルが選択した色で塗りつぶされます。

なお、行を塗りつぶすには、手順1. で A2 から C5 までを選択しておきます。
そうすると、C列のセルが「合格」のときには、その行に色が付きます。

02joukentukisyosiki_gyounuritubusi

これまでと同じことを書いても面白くないですし、せっかくなのでちょっと違うことも書いてみます。

以下、いろいろと――。

条件付き書式を設定する前に明らかにすること。

4つあります。

  1. 目的
    何のためにつくるファイルなのか。
  2. 条件付き書式を適用する場所
    どのセル、どの範囲に適用するのか。
  3. 条件は何か。
    セルの値が50以上である――など。
  4. どんな書式にするのか。
    セルを赤く塗りつぶす――とか。

「そんなの当たり前でしょう」という気がしますよね。私もそう思います。でも、これがなかなか……。

私が経験してきたなかでは、特に1番の「目的」がはっきりしていないことってあるんですよね。

たとえば、「セルの値が5未満だったら、その値を赤色の太字にしたい」って相談を受けたことがあります。
何に使うのかを尋ねたら、そうやって、5未満の値を目立たせた資料を作って、社内のミーティングのときに見やすくしたいという。

そういうことなら、文字を赤くするよりはセルを塗りつぶすか、網かけしたほうがよいと話したらそうすることになりました。

赤い文字は画面では目立ちますが、モノクロ印刷したら区別がつきません。
セルに色を付けておけば、モノクロ印刷のときでもそこがわかります。

「ミーティングのときに見やすくしたい」と思ってはいても、それが目的としてしっかり意識されていなかったんですね。
目的がはっきりしたら、設定するべき書式が変更になったわけです。

何のためにつくるファイルなのかをはっきりさせておけば、そのために何をどうすればよいのかを考えやすくなります。

行は相対参照にする。

上の図の場合は――ということです。

手順1.で セル A2 から A5 までを選択していますから、行のほうは相対参照にしておかないと、行の指定がずれていきません。

= $C$2="合格"

にすると、A2 から A5 までのセルの塗りつぶしを決める条件は、セル C2 の値のみにしたことになります。
もし、C2 が「合格」だったら、C列の他のセルに関係なく、A2 から A5 の全部が色付けされてしまいます。

列と行で指定をずらしていかなければいけないほうは、相対参照にする――です。

絶対参照と相対参照の切り替え

F4 キーを使います。

「次の数式を満たす場合に値を書式設定」の欄を入力する際に、欄内をクリックしたあとで、セル C2 をクリックすると、C2 が絶対参照になります。

=$C$2

と入ります。

03joukentukisyosiki_zettaisansyou

あるいは、条件のもとになるセルや範囲が、別のシートにあったりすると、手入力するよりはそのシートを開いてそこを選択したほうが手っ取り早いですよね。その場合もセル参照が絶対参照になります。

セル参照が必要な参照の状態になるまで F4 キーを押してください。
押すたびに、=$C$2 → =C$2 → =$C2 → =C2 → =$C$2 とセル参照が変わっていきます。

基本的なことですが、絶対参照を意味する「$」は、「列を参照する英字」と「行を参照する数字」の左側に添えます。
(列か行のどちらかを絶対参照にする場合は、その左側にだけ。)

既定では、Excel は 「A1 参照スタイル」と呼ばれるセル参照を使います。
(出典:マイクロソフトのサイトにある「Excel の数式の概要-Excel の数式にセル参照を使用する」)

セル参照の並びは、C2 のように「列を参照する英字」と「行を参照する数字」になりますから、列も行も絶対参照にする場合は、 $C と $2 で $C$2 です。
列 C と 行 2 が交差するセルを絶対参照する指定です。

「$ で挟んでいるから――」と考える人がいました。
$C$ というイメージをしたのでしょうね。そう考えては、セル参照はどういうものかがわからなくなります。

「次の数式を満たす場合に値を書式設定」の欄を編集するには。

F2 キーを使います。

冒頭の手順4. で「次の数式を満たす場合に値を書式設定」の欄内にカーソルがあるときに矢印キーを押してしまうと、わけのわからない表示になる場合があります。

たとえば、=$C$2="合格" と入力してしまってから、$2 になっていることを気付いて、2 の左側の $ だけを消したくて矢印キーでカーソルを $ の前に動かそうとすると、=$C$2="合格"+$A$2 となったり……。

04joukentukisyosiki_sansyou

エクセルのステータスバーを見てください。シートより左下のスミのあたりです。 「参照」とか「入力」となっているはずです。(通常では「準備完了」)

05joukentukisyosiki_nyuryoku

ここが「入力」となっているときに、「次の数式を満たす場合に値を書式設定」の欄のなかでカーソルを動かそうとすると、さきほどのようなわけのわからない表示になります。

この欄を編集したいときは、カーソルが欄内にある状態で F2 キーを押します。

ステータスバーに「編集」が表示されるまで F2 キーを押していってください。
「編集」が表示されれば、左右の矢印キーを使って、欄内で自由にカーソルを動かすことができます。
これは「編集モード」と呼ばれる状態です。

06joukentukisyosiki_hensyu

話は少し変わりますが、編集モード( F2 キーでステイタスバーに「編集」を表示)は、条件付き書式以外にも役に立ちます。

たとえば、「データの入力規則」を使って、セルに入れる値をリスト表示させているとき。
リスト表示させる値を「元の値」の欄に直に入力していて、リストの値を編集しようとして欄をクリック後に矢印キーを押すと、ここでもわけのわからないセル参照が入ってしまいます。

07f2_list_hensyuu

そういうときも、「元の値」の欄をクリックしてから、F2 キーを押して、編集モードにすれば、リストの元の値を自由に書き換えることができます。

08f2_list_hensyuumode

あるいは、セルやセル範囲に名前を付ける際に、参照範囲を編集するのにも使えます。

09f2_namae_hensyuumode

ほかにも、セルの数式を書き換える際にも F2 キーを押すとセルが編集モードになります。
(セルをダブルクリックするのと同じです。)

Windows 上でファイル名やフォルダ名を変えたいときにも使えますよ。

話を元へ戻します。

条件付き書式の数式を編集する際には、「次の数式を満たす場合に値を書式設定」の欄をクリックしてカーソルを置いたら、F2 キーを押してステータスバーに「編集」と表示されるようにする――これを忘れなければ、変なセル参照が表示されて困惑することはなくなります。

| | コメント (0) | トラックバック (0)

Excel で、数字と英字が混在した文字列からそれぞれを別々に取り出す。その2

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1807(ビルド10325.20118)

H.K さん。

その1」の続きです。

数字が英字(あるいは、英字が数字に)挟まっている場合―― abc456defg とか 987WXY54 ――です。

大事なことなので、「その1」で挙げた要点にもう一度ふれておきます。

  • 「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」ことが大原則。
  • そのために、理解がややこしい関数のネストや、我々の職場で理解できる人がほとんどいない配列数式の使用は避ける。
  • 結果を得るまでの過程の一つひとつを作業列で処理することで、全体として何をしているのかを誰でも理解しやすくする。
  • 紹介したやり方が唯一の正解ではない。
  • 関数の理解は、個々人が頑張るしかない。周囲は、その努力への支援を頑張る。「仕事に必要だから覚えてください」と言うだけではだめ。
  • 関数のネストや配列数式を、我々の職場で使ってはいけないということではない。周囲の皆が理解できるか、使わなければならない具体的理由がある場合に使う。
  • 使うべき理由があって、関数のネストや配列数式を職場で使う場合は、どうなっていて何をしているかをわかりやすく説明したものを用意する。大原則の「できるかぎり誰もが簡単に理解できるようにしておく」というのは、そこまで含んでの話。

数字と英字が互いに挟まっている場合

Eisuukonzai06

「元の文字列を部分的に置換して共通の区切りを設ける」ことやその他の基本的な考え方、詳細は「その1」と同じです。

使っている関数も同じです。
CONCAT 関数、SUBSTITUTE 関数、FIND 関数、LEFT 関数と MID 関数です。

ただし、少し異なっている部分があります。
2つ目の区切りの位置を調べる FIND 関数(図ではK列)と、区切りと区切りの間を抜き出す MID 関数(M列)の使い方です。

図の2行目を使って説明します。

2つ目の区切りの位置を FIND 関数で調べる。

FIND 関数の書式は次のようです。

FIND(検索文字列, 対象, [開始位置])

セル K2 の数式は次のようになっています。

=FIND(G2,J2,F2+1)

引数「検索文字列」は、「/」(全角のスラッシュ)です。
「対象」は  6896/hth/56 です。

「開始位置」は、F列の値( 5 )に 1 を足しています。
引数「開始位置」を使っているのが「その1」と異なるところです。

値を入れると次のようになります。

=FIND("/","6896/hth/56",5+1)

引数「開始位置」を省くと、FIND 関数は左端からみて最初の「検索文字列」の位置を返します。 6896/hth/56 の場合は、1つ目のスラッシュの位置(5文字目なので 5 が返ってくる。)です。

「開始位置」は「検索文字列」が複数ある場合に使います。FIND 関数が検索を開始する位置を指定します。
6896/hth/56 では、「/」が2つあります。

K列の数式では、「開始位置」で1つ目のスラッシュの位置( 5 )に 1 を足しています。最初に現れる「/」より後ろの部分で次に現れる「/」を探すという指定です。
「6文字目から数えると、何文字目に次のスラッシュがあるか」ということです。

2つ目のスラッシュは9文字目なので FIND 関数は 9 を返してきます。

Eisuukonzai07

区切りと区切りの間を MID 関数で取り出す。

例では部分的な置換が終わると、6896hth56 が 6896/hth/56 になります。

1つ目の区切りより前の取り出しと、2つ目の区切りより後ろの取り出しは、「その1」で述べたものと同じ考え方をします。

・1つ目の区切りより前を取り出す。(図のL列)
LEFT 関数の引数「文字数」で、1つ目のスラッシュの直前(1つ目のスラッシュの位置 - 1)を指定して 6896 を得ます。

・2つ目の区切りより後ろを取り出す。(図のN列)
MID 関数の引数「開始位置」で、2つ目のスラッシュの直後(2つ目のスラッシュの位置 + 1)を指定します。
引数「文字数」は、ありえないぐらい大きな数(図では100)を入れておきます。それで 56 を得られます。

真ん中にあたる hth も MID 関数で取り出しますが、MID 関数に不慣れだとちょっと考え方がややこしいかと思います。そこの理解は、個々人の頑張りどころです。(図のM列)

MID 関数の書式は次のようです。

MID(文字列, 開始位置, 文字数)

引数「文字列」は、6896/hth/56 です。
「開始位置」は、1つ目のスラッシュの位置 + 1 なので 5 + 1 になります。
(6文字目の h から取り出し始める。)

開始位置から何文字取り出すかを指定する「文字数」は、次のようになります。

2つ目のスラッシュの位置 - 1つ目のスラッシュの位置 - 1

上図に基づいて値を当てはめてみると、次のようになります。

MID("6896/hth/56",5+1,9-5-1)

最初、私は引数「文字数」を、2つ目のスラッシュの位置 - 1 とうっかり考えてしまいました。

6896/hth/56 の場合は、2つ目のスラッシュの位置は 9 文字目なので、それでは 8 文字を取り出す指定になります。
8 文字ということは、1つ目のスラッシュの後ろから残り全部( 6 文字)である hth/56 がセルに表示されます。

ほしいのは hth の3文字です。

2つの区切りに挟まれた部分が欲しいので、ここで注目すべきは、2つ目のスラッシュの位置を一番右端と捉えて、
6896/hth/
までの固まりです。

「開始位置」が、スラッシュの位置 + 1 なので、取り出しは 6 文字目の h から始まります。
ということは、5 文字目のスラッシュまでは不要といえます。2つ目のスラッシュの位置は左端から 9 文字目ですから不要な部分は引いて 9 - 5 = 4 と考えます。

「文字数」で 6 文字目から 4 文字を取り出す指定をしたということです。
これで、hth/ が残ったことになります。

最後に、右端のスラッシュも不要なのでさらに 1 を引きます。

9 - 5 - 1 となって、答えは 3 です。MID 関数で次のように指定したのと同じです。

MID("6896/hth/56",6,3)

「6 文字目から 3 文字を取り出し」ます。その結果、hth がセルに表示されます。

Eisuukonzai08

その1」から長くなってしまいました。

まとめてしまうと――関数のネストや配列数式は、ぱっと見て理解できる人が私たちの職場にはあまりいないので、具体的な理由なく使わないほうがよいです。作業列で処理するほうが誰にでもわかりやすくてよいです。――ということなんですけどね。

長くなってすみません。

| | コメント (0) | トラックバック (0)

Excel で、数字と英字が混在した文字列からそれぞれを別々に取り出す。その1

この記事は自分用の覚書です。
(Windows 10 Pro 64ビット + Excel2016 Office365 Business サブスクリプション  バージョン1807(ビルド10325.20118)

H.K さん。

夏休みもあったし、数字と英字が混在した文字列からそれらを別々に取り出すやり方を考えてみました。

ネット検索すると配列数式を使うやり方が見つかりますが、前に「配列数式は使わない。作業セルを使う。」でふれたように、我々の職場では配列数式は避けて、作業列を使うほうがよいです。

また、関数をネストするやり方もよく見つかりますが、関数のネストも何をしているかの理解を面倒にすることが多いです。

「関数をネストしてはいけない」ということではないです。
ネストするしかない場合もあるでしょうから。
( セルの数式がエラーかどうかを判定して、エラーだったらエラー表示を非表示にする――エラーを見せない――とか……。)

配列数式と同じで、関数のネストも、周囲の誰でも理解できるか、そうするべき具体的理由がある場合に使ったほうがよいという意味です。

「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」という大原則を踏まえて、我々の仕事でよく使う関数を使い、作業列で関数のネストをなくして、全体で何をしているかが理解しやすくなるように考えてみました。

なお、以下のやり方が唯一の正解ではないです。仕事でエクセルを使う際にそんなものは無いと私は思います。
(このあと、えらく長くなってしまいました。ごめんなさい。)

課題

  • 半角英数字が混在している。数字に続いて英字、英字に続いて数字といった並びになっている。
    ZW123 や 4537defft など。
  • 字数は一定ではない。
  • ハイフンやスペースなど区切り位置に使える共通の部分がない。

考え方

ZW-123 や 4537-defft といったように区切りとして使える共通のものがあれば、区切りの前後を分けて抜き出すことは難しくありません。FIND 関数、LEFT 関数、MID 関数を使って処理できます。

ということは、作業列を使って「区切りとして使える共通のもの」を付け加えてやればいいんです。
(共通の区切りがあれば、データツールの「区切り位置」機能でも処理できます。今回は前述の関数を使います。我々の職場では必須といえる関数ですし、数式をセルに入れてテンプレートにしておけば、同じ仕事で何度でも使えるツールにすることができます。)

数字と英字が混在した文字列からそれらを別々に取り出す。

何をするのかというと、たとえば元の文字列が 6896hthjd なら左から5文字目の h を、区切りを伴う h に置換します。
6896/hthjd とかに。

Eisuukonzai01

共通の区切りができたら、区切りの位置を FIND 関数で求めます。それをもとにして、区切りの直前までは LEFT 関数で、直後から残りを MID 関数で取り出せます。

それぞれの過程を作業列でやっていきます。

Eisuukonzai02

1行目はその列が何なのかを表す単なる名札なので、わかりやすいように変えてください。

例では、CONCAT 関数、SUBSTITUTE 関数、FIND 関数、LEFT 関数と MID 関数を使っています。

入力する列は3つです。A列、B列、C列です。

A列に「元の文字列」を入力しています。

B列には「区切りとして使う値」を入力しています。ここでは、全角の/ (スラッシュ)にしました。
"この位置で切り取って分ける" ということが、全角のスラッシュでイメージしやすいかなと思ったもので。

C列に入力するのは、区切りの前後で数字と英字を分けた際に、区切りより後ろの固まりの一文字目(区切りの直後)になる値です。
6896hthjd なら、6896/hthjd にしたいのでスラッシュの直後になる h です。

区切りの直前にある 6 ではなく、なぜ直後の h なのかというと、あとで使う SUBSTITUE 関数に関係していますので、そこでふれます。

なお、C列に入れる値はA列の値に合わせて大文字・小文字を守ってください。FIND 関数は大文字と小文字を区別します。

その区別がない SEARCH 関数を使うのも悪くはないのですが、やはり見たままを入力するほうが、"この値の前で分けている" とイメージしやすいでしょうから、FIND 関数のほうを使いました。

D列よりあとの列は関数の計算結果によって埋めています。

D列で使っている関数について

B列の区切りとC列の値を CONCAT 関数で結合しています。
あとで、A列にある元の文字列を部分的に置換しますが、その置換後である文字列をつくっています。

CONCAT 関数は、Office365サブスクライバーの Excel2016 でないと使えません。
もし、Office365サブスクライバーの Excel2016 ではない Excel で同じことをするなら、 =B2&C2 のように & を使って値を結合するか、CONCATENATE 関数を使ってください。

CONCAT 関数を使った理由は、今回は互換を考える必要がないですし、マイクロソフトが CONCAT 関数の使用を推奨しているからです。
(「今後は CONCAT を使用することを検討する必要があります。これは、CONCATENATE が Excel の将来のバージョンで利用できない可能性があるためです。」 出典:Excel2016 ヘルプ)

E列で使っている関数について

SUBSTITUTE 関数を使っています。
A列の値を部分的に置換することで共通の区切りを付け加えています。

SUBSTITUTE 関数の書式は次のようです。

SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])

引数「文字列」が A 列のセル。
「検索文字列」は C 列のセル。
「置換文字列」は D 列のセル。
になります。

「置換対象」は 1 です。
A列のセルにある文字列のなかでC列の値を探しますが、文字列のなかに同じ値が複数ある場合、左端から何番目にあるその値を置換するのかを指定しています。

区切りの直後にあたる値を置換したいので、1 にします。ここを省略すると、同じ「検索文字列」があれば、全部置換されます。
6896hthjd なら、h は5文字目と7文字目にあります。「置換対象」は 1 なので、5文字目(1番目)の h だけが /h に置換されます。

6896hthjd が 6896/hthjd になります。

Eisuukonzai03

同じ値が複数ある場合、区切りの直前の値(ここでは4文字目の 6 )を 区切りと結合したものに置換( 6/ )するには、その値が左端からいくつ目になるかを常に数えないといけません。

課題にあるように「字数は一定ではない」からです。

そこで、区切りの直後にある値を結合するようにしておきます。そうすれば、区切りのところで分けると、直後の値は常に1番目です。
引数「置換対象」を 1 にしておけば、同じ値がいくつあって気にしなくてもよくなります。

Eisuukonzai04

REPLACE 関数を使っても同様のことができますが、やってみると、SUBSTITUTE 関数を使う場合より作業列が1つ増えるのがわかりました。もうひと手間かけて REPLACE 関数を使うべき理由がないので、SUBSTITUTE 関数を使うことにしました。

F列で使っている関数について

E列の値のなかにある区切りの位置を、FIND 関数で求めています。

FIND 関数は、「指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。」(出典:Excel2016 ヘルプ)

6896/hthjd では、スラッシュは5文字目なので 5 になります。

G列とH列で使っている数式

G列とH列で、数字と英字を別々に取り出しています。

G列では LEFT 関数を使って、E列の値のうち区切りより前を取り出しています。
H列では MID 関数を使って、区切りより後ろを全部取り出しています。

LEFT 関数の書式は次のようです。

LEFT(文字列, [文字数])

左側から何文字取り出すかを、引数「文字数」で指定します。
左端から区切りの直前まで取り出すので、「文字数」は「区切りの位置 - 1」になります。

MID 関数の書式は次のようです。

MID(文字列, 開始位置, 文字数)

引数「開始位置」は、元の文字列の何文字目から取り出し始めるかの指定です。
区切りの直後から取り出し始めるので、「区切りの位置 + 1」になります。

引数「文字数」は、「開始位置から何文字取り出すか」の指定ですから、あり得ないくらい大きい値を式のなかに書いてあります。(ここでは 100 )

これで、数字と英字が混在している文字列をそれぞれに分けることができます。

結果を得るまでに必要な一つひとつの処理を作業列にすることで、各数式はできるだけ単純なものにして、全体として何をしているかを誰にでも理解しやすくしたつもりですが、どうでしょう。

関数のネストや配列数式を使えば、値を入力する必要がなくなるのに……。

もしそう感じるなら、「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」という大原則を忘れています。

でもまあ確かに、区切りと結合する値を入力する作業が面倒と言えば面倒ですよね。

ネット検索で見つかるような関数のネストや配列数式を使えば、その作業は無くなります。
ですが、我々の職場では何をしているかを理解できる人が限られるファイルになります。

「(誰にでも理解しやすくしておくために)区切りと結合する値を入力する作業」を避けたくて、「(職場で理解できる人が限られる)配列数式や関数のネストを使う」というのは、私に言わせれば、乱暴な仕事の仕方です。

ここで紹介したやり方だと、何をしているかを誰もが簡単に理解しやすいようにしておけます。
「誰にでも理解しやすい」という効用は、区切りと結合する値を入力する少々の面倒を込みにしてもまだ利のほうが多いと、私は判断しました。
(今回はデータ数が何百、何千とあるわけでもないですし。)

元の文字列を見ながら値を入れていくだけなので、勤め始めたばかりの新入社員やパートタイマーの方、アルバイトの方にも無理なくやってもらえます。

上図でいえば、入力してもらうのは実質的にC列だけです。
元の文字列はすでにありますし、B列の「区切り」やD列からH列の数式は、あらかじめ入れておけます。

数式がエラーを起こしますが、C列に値を入力したら消えるエラーなのでそのままでよいと思います。
内部だけで使うものですし、エラーを非表示にしなければならない具体的な理由もありません。

もし、列が増えて見づらければ処理の途中にあたる列を非表示にしたり、必要なレイアウトをつくった別のシートから値を参照すればよいのは、前出のリンク先で述べた通りです。

Eisuukonzai05

使っている関数を知らない人もいるから、誰にでも理解しやすいとは言えないのでは――。

職場には各関数の使い方をよく知らない人もいるでしょうが、それらの理解は各人の頑張りどころだと私は思います。

我々の職場では、配列数式を使わなければならないことなんて「無い」と言い切っても言い過ぎではないぐらいですが、関数を使わないで済ませることはできません。

ここで使っている関数は、我々の日々の仕事でしばしば使います。理解しておかなければならない具体的な理由があるといえます。

これらの関数をよく知らない人が職場にいるかもしれませんが、理解できるように各々頑張ってください。仕事に必須ですから――ということです。

もちろん、理解のための支援は、私も含めて周囲が頑張らないといけません。「仕事に必要なんだから理解しておいてよ」と言うだけではだめです。

もし関数のネストや配列数式を使うべき具体的な理由があって使う場合も、大原則は変わりません。
何をしていて、どうなっているのかを、わかりやすく説明したものを用意するなどしてください。

「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」という大原則は、そこまで含んでの話です。

そもそも、「職場には、使っている関数をよく知らない人もいる」からこそ、配列数式や関数のネストなんてややこしいものを使わないで――作業列で――済ませられるならそのほうがいいでしょう。

やってみた感想

上記では「私、わかってます」風な書き方をしてますが、けっこう悩みました。

「共通の区切りがあれば話は簡単」というのは、割と早めに思いついたのですが、どうやれば区切りを設けられるかがわかりませんでした。
いっときは、本当に配列数式を使わないと、これはさすがに無理かも……という気持ちになりましたし。

1日中こればかりやっているわけにもいかなかったので、結局、「元の文字列を部分的に置換すればよい」と思いつくまでに延べで4日ぐらい、時間にすると4、5時間かかりました。

取っ掛かりさへつかめてしまえば、あとは早かったです。処理の一つひとつを行っているのは、普段から使い慣れている関数ですから。
(画像をつくるほうが時間がかかったぐらいです。)

最終的に、誰にでも任せてやってもらえる仕組みになったと思います。

冒頭のリンク先で、「作業列をどう使うかを考えるのに、それなりの時間はかかるでしょう」と述べたのはこういうことです。アイデアを思いつくまでに時間がかかることがあるんです。

そして、「ややこしい配列数式を頑張って理解して使うことに時間をかけるよりは、作業列をどう使うかを考えるのに時間をかけたほうが、結局は業務全体の効率を上げることにつながる」――という思いも変わっていません。

ちなみに、今回は課題に入っていませんが、数字が英字(あるいは、英字が数字に)挟まっている場合もあるかと思います。abc456defg とか、987WXY54 とか。

そういう場合も、上記と同様の考え方で処理できます。
長くなったので、それについては次の記事で。

| | コメント (0) | トラックバック (0)

アプリの修正をやってくれたら嬉しいぜ。

タニタの体組成計を買った。

スマートフォン用のアプリをダウンロードすれば、計測した数値を日々入力しておける。それらを使ってグラフ表示できたりする。

計測は自動で行われる。あらかじめ、男性〇歳、年齢〇歳、身長〇cmなどと人物情報を入れておけば、電源オフの状態でも載るだけで電源オンになり、計測が始まる。

驚きなのは、僕が載れば「男性」、妻が載れば「女性」として登録した情報が自動的に呼び出されて計測が始まることだ。

体重の違いとかを基本にして判別してるんだろうか? 仮に、男性も女性も年齢や身長など全く同じ情報が入っている場合でも、載っている人の人物情報を呼び出してくれたりするのか?

ちょっと気になるがまあ細かいことはとにかく、これは便利だ。最近では当たり前の機能なんだろうけど、未来が来ている感がするのが楽しいぞ。

「載るのが楽しい」というのは、体組成計としては、かなり点数が高いといっていいんじゃないか。

ただ少しだけ、アプリにほんのわずかな不満がある。

計測が終わると、体重や筋肉量、内臓脂肪レベルなどを順に画面で確認できるのだけど、それを見ながらアプリの該当欄に数値を入れていくと、途中で順番が1つ入れ替わっているのがある。

たとえば、体組成計の画面では、体重→筋肉量→内臓脂肪レベル→体年齢というように進んでいくとすると、アプリの入力欄は、体重→筋肉量→体年齢→内臓脂肪レベルになっている。
(たとえばだからね。実際の表示内容や順序は記憶してない。念のため。)

アプリの入力欄の上から順に入力していく最中で、「筋肉量」を入れたらいったん画面を少し上に送って「内臓脂肪レベル」を入力すると、また下に戻して「体年齢」を入力することになる。

たった1か所なのだよ。あとは、画面とアプリの入力欄の並びは合っているのに――それだけによけい残念だ。

タニタさん。たった1か所――アプリを修正してくれたりしないかなあ。社員さんがもしここを見るようなことがあったら、やってくれたりする?

| | コメント (0) | トラックバック (0)

パンダが生まれた――和歌山でだ!

我が故郷である和歌山の『アドベンチャーワールド』で、8月14日(火)ジャイアントパンダの赤ちゃんが誕生した。
「永明(えいめい)」(オス・25歳)と「良浜(らうひん)」(メス・17歳)との間にできた子で、2年ぶりの赤ちゃん誕生だとか。

前にも同じことを言ったが――東京のテレビ局は大々的に報道しろよ!

アドベンチャーワールドでは、これまでに15頭のジャイアントパンダの繁殖に成功していて、今回が16頭目だぞ!

上野動物園なんて泣きながら裸足で逃げるんじゃないか?!

なぜだ? なぜ大きく報道しない? 世界トップクラスの繁殖・飼育技術と実績が国内に――和歌山県に――あるのだぞ!

その事実は、広く国民が知っておくことに十分以上の価値があると、私は思うが、あなたたちの見解は如何に。

全国ネットのテレビ局ならなおのことだ。全国を網羅しているくせに、パンダ誕生のニュースで東京偏重なんてローカル根性丸出しにするなよな!

まったく地方というか――東京以外――をなめているとしか思えないぞ。というのも、ご存じだろうか、ジャイアントパンダは神戸市立王子動物園にもいるのだ。

なぜか、東京のテレビ局はそのことにもあまりふれない。

関西方面に遊びに来た人は、兵庫県と和歌山県でパンダを見ることができるのだよ。
厳島神社と伊勢神宮を弾丸ツアーした人がいたけど、弾丸でなくてもパンダに会えるのが、兵庫県と和歌山県だぞ。すごくないか?
(パンダが東京にしかいないと思っている人は、けっこういそうな気がするなあ。)

これが上野でのことなら、「できそうだ」というだけで周辺の人たちを取材し、「できた」となったらバラエティ番組でもさらに大はしゃぎして、周辺取材も嬉々とした様子で行ったり、日本パンダ保護協会名誉会長の黒柳徹子さんに話を聞きに行ったりするくせにねえ。
(某国営テレビ局も、そこそこはしゃぐし。)

ひょっとして、聞きに行っているのではないのか?
黒柳さん側から「パンダの子供ができたのだから、コメントを聞きに取材に来て」と言ってきたりするのか? 

まあ、生き馬の目を抜く芸能界だ。そのぐらいのやり取りがあっても驚きはしないが。

もしそうだとしたら、黒柳徹子さんの事務所に言わないといけない。和歌山でパンダが生まれたんだからさ。コメントを発表してくださいよ!

そのあたりの芸能界のしきたり的なものは知らないし、どうでもいい。

とにかくだ! 東京のテレビ局は、和歌山でパンダが生まれたと、もっとド~~ンと報道しなさいな!

| | コメント (0) | トラックバック (0)

«バッテリー上がりぐらい助けてあげたいよ。