Excel。MAP関数はLAMBDAで新しい値を作成しmappingで形成された配列に返します。
<関数辞典:MAP関数>
MAP関数
読み方: マップ
分類: 論理
MAP(array,lambda_or_array2,…)
LAMBDAを適用して新しい値を作成することにより、配列内の各値をmappingで形成された配列を新しい値に返す
Excel・Word・PowerPoint・Accessのテクニックや研修ネタ・テキストを紹介しております。主に、講義先や現場レベルで質問があったものを中心に書いております。
MAP関数
読み方: マップ
分類: 論理
MAP(array,lambda_or_array2,…)
LAMBDAを適用して新しい値を作成することにより、配列内の各値をmappingで形成された配列を新しい値に返す
会議参加予定フィールド内に「,(カンマ)」で区切られた文字列。
1日目は「町田,成瀬,津田」と入力されていますので、会議参加者数は、3名です。
この3を求めたいわけです。
Excelにエクスポートして、求めてもいいのですが、いちいちExcelにエクスポートするのも、面倒なので、Accessで求めたいわけです。
ExcelもAccessも一発で求めることはできませんが、基本的な考え方は同じです。
フィールド内の文字数から「,(カンマ)」を除いた文字数を引けば、「,(カンマ)」の数が求められます。
求めた数は、区切り数なので、「+1」すれば、「,(カンマ)」で区切られた文字列数を求めることができるというわけです。
Excelならば、
=LEN(B2)-LEN(SUBSTITUTE(B2,",",""))+1
のような、数式をつくるわけです。
Accessでは、クエリで演算フィールドをつかって対応することになりますが、Excelと違うのは、SUBSTITUTE関数が、Accessにはありません。
そこで、Accessでは、Replace関数をつかって、「,(カンマ)」を空白に置換して「,(カンマ)」を除いた文字数を求めます。
なお、文字数を数えるのは、Accessでは、Excelと同じLen関数が用意されています。
それでは、クエリで演算フィールドつくっていきます。
作成タブのクエリデザインをつかいます。
また、テーブルのフィールドはすべて使っています
参加人数: Len([会議参加予定])-Len(Replace([会議参加予定],",",""))+1
と設定します。
では、実行してみましょう。
Excelとの違いは、Replace関数をつかって、置換したことです。
入力作業。
結構面倒です。
そして、入力ミスを起こりがち。
例えば、小数点第1位まで入力しちゃダメなのに、入れてしまったとか。
それなら、入力作業の前に、小数点第1位までしか入力できないようにしたらいいわけです。
では、どのようにしたらいいのでしょうか。
その方法をご紹介しております。
作業効率もUPする、知っていると便利なショートカットキー。
なお、Excelのバージョンによって多少変わります。
Ctrl+A
全選択
Ctrl+B
太字にする
Ctrl+C
コピーする
Ctrl+D
上のセルを下にコピーする
Ctrl+E
フラッシュフィル
参加者名簿があります。
しかも、1が2回登場するようなことがないように、つまり重複しないようにしたいわけです。
今回は10名なので、自力で振り分けることもできますが、件数が多くなれば、とても大変な処理になってしまいます。
何かいい方法は、ないのでしょうか。
そこで、C2に次の数式を設定してみます。
=SORTBY(SEQUENCE(10),RANDARRAY(10))
使用している関数は、スピル機能対応なので、絶対参照や、オートフィルで数式をコピーする必要はありません。
この数式がどのように動くことで、1から10までの数値をランダムで並べることができるのか、関数を確認していきます。
SORTBY関数は、並べ替えをする関数です。
最初の引数は、「配列」。
2つ目の引数が「基準配列1」なのですが、それぞれ関数をつかっていますので、最初の引数で使用している
最初の引数を使用している関数は、SEQUENCE関数です。連番を作る関数です。
SEQUENCE(10) で、1から10までの連番を設定することができます
この数値をランダムで並べ替える必要があるわけです。
そこで、RANDARRAY関数をつかって、乱数を発生させます。
小数の乱数を発生するので、算出結果が重複することは、まずありません。
なお、セルをアクティブなどするたびに、再計算されます。
説明の都合で、C列の順番を作成した後に、F列をつくっています。
そのため、F列の結果とC列の結果は合致しませんので、ご了承ください。
MAKEARRAY関数
読み方: メイクアレイ
分類: 論理
MAKEARRAY(rows,column,function)
LAMBDA関数を適用して、指定した行と列のサイズの計算配列を返します。