Excel。REPT関数は文字列を指定回数だけ繰り返して表示します。
<関数辞典:REPT関数>
REPT関数
読み方: リピート
分類: 文字列操作
REPT(文字列,繰り返し回数)
文字列を指定回数だけ繰り返して表示する
【Excel・Word・PowerPoint・Access】あなたの「困った」を解決!10年以上の経験が詰まった、現場の疑問から生まれた実践テクニック集。作業効率を劇的に上げるOffice活用術をお届けします。
REPT関数
読み方: リピート
分類: 文字列操作
REPT(文字列,繰り返し回数)
文字列を指定回数だけ繰り返して表示する
会議参加予定の空いている時間を見つけて、その日時で会議を開催したいと考えています。
下記のような予定になっています。
それぞれ時間ごとに、○✕で、時間が空いているかどうかの確認はできます。
ただし、この3名がすべて○になっている時間を見つけようとしたら、大変です。
今回は、紹介用なので、3名で3日間の4時間ですが、人数が多くなればなるほど大変な作業になることは間違いありません。
IF関数をつかってみるとしたら、それも大変です。Aさんの10時は○かどうかを判断して、さらにBさんCさんの10時というような数式をつくるとしたら、面倒でしかありませんし、何より非効率です。
そこで、文字結合のCONCAT関数をつかうことで、簡潔に解決することができます。
では、B2をクリックして、CONCAT関数をつかった数式をつくります。
=IF(CONCAT(B8,B14,B20)=REPT("○",3),"OK","")
あとは、オートフィルで数式をコピーします。
これで、この3名が空いている時間は、
12月1日の10時と11時
12月2日の14時
ということがわかりました。
では、数式を確認しておきましょう。
全員空いているならば、OKと表示したかったので、IF関数をつかっております。
IF関数の論理式ですが、
3名の12月1日10時を確認したい。
そこで、CONCAT関数をつかって文字結合します。
CONCAT(B8,B14,B20)
こうすることで、○○○ のように文字結合することができます。
この結果が、○○○ と等しいかという論理式をつくるわけです。
今回は、3名なので、次のように数式をつくってもよかったのですが、
=IF(CONCAT(B8,B14,B20)=”○○○","OK","")
人数が多くなると、○の数が多くしなければなりません。
仮に、10名だと○が10個。
入力するのも大変ですが、ミスが発生しやすくなります。
そこで、文字を繰り返す関数のREPT関数をつかって、○を入力する作業を簡素化します。
REPT("○",3)
とすることで、○を3回繰り返すので、○○○という文字をつくることができます。
このように、CONCAT関数、さらにREPT関数をつかうことで、空いている時間を手早く見つけることができます。
請求書や領収書などの金額を1セル1文字で入力されたものをつくりたい場合、どのようにしたら、手早く、1セル1文字で表示することができるのでしょうか。
次の表をご覧ください。
このような場合、SEQUENCE関数をつかうことで解決します。
なお、SEQUENCE関数とは、指定した範囲の連続した数値を自動的に生成する関数です。
SEQUENCE関数にMID関数を組み合わせすことで対応できます。
では、B3に次の数式を設定します。
1セルに1文字ずつ入力することができました。
数式を確認してみましょう。
MID関数は、指定した文字列の中から、任意の位置から指定した文字数分だけ文字を抽出する関数です。
最初の引数は、文字列なので、A1を設定します。
2つ目の引数は、開始位置です。
開始位置に、SEQUENCE関数をつかいます。
SEQUENCE関数はあとで説明します。
3つ目の引数は、文字数。
1文字ずつなので、1を設定します。
2つ目の引数につかっていた、SEQUENCE関数を見ていきましょう。
SEQUENCE関数の最初の引数は、行です。1行で表示したいので、1と設定します。
2つ目の引数は、列です。
今回は、最大8桁までの数値に対応することにしたので、8と設定しました。
SEQUENCE関数は、スピル対応の関数なので、自動的に数式を拡張してくれます。
MID+SEQUENCE関数で対応することができたのですが、よくみると、左詰になっています。
一番右側に「円」と表示させているので、できたら、右詰にしたい。
B1の数式は、
=REPT(" ",8-LEN(A1))&A1
A1は6桁しかありませんでした、8桁にすれば解決できますが、0をつけて00123456としても、0は表示されません。
よって、0を先頭の前につけても8桁にすることはできません。
そこで、空白と合体させることで対応することができるようになります。
何文字分の空白を追加すればいいかを判断したいので、REPT関数をつかって、空白文字を繰り返します。
数値が何桁なのかは、LEN関数をついかいます。
あとは、先ほど設定した
=MID(A1,SEQUENCE(1,8),1)を
=MID(B1,SEQUENCE(1,8),1)
と修正して完成です。
氏名など、個人情報保護上、表示することができない場合があります。
今回は全角の「*(アスタリスク)」に置き換えて表示したい場合の方法をご紹介します。
B2に、数式を設定します。
=LEFT(A2,1)&REPT("*",LEN(A2)-2)&RIGHT(A2,1)
最初の文字は、LEFT関数をつかいます。
LEFT(A2,1)
これで、左から1文字を抽出することができます。
これを「&(アンパサンド)」で結合します。
伏字の部分の数式が
REPT("*",LEN(A2)-2)
REPT関数の中にあるLEN関数から説明します。
LEN関数は文字数を算出する関数です。
その値から前後1文字分ずつ、つまり「-2」することで、伏字の数がわかります。
そして、REPT関数ですが、
REPT関数は、指定した文字列を指定した回数繰り返す関数です。
最初の引数の文字列に「”*”」とします。これが、伏字の「*」です。
2つ目の引数は、繰り返し回数です。
先程説明しましたLEN関数で繰り返し回数を算出しています。
最後に、RIGHT関数をつかって、右側の1文字を抽出し、結合することで、完成します。
「1」を「001」のように、左側に0(ゼロ)をつけて、桁を揃えるなら表示形式で対応することが多いと思います。
しかし、次の表のように、「1」を「100」のように、右側に0(ゼロ)をつけて、桁を揃えるとしたら、どのようにしたらいいのでしょうか。
今回は、6桁で添える場合で考えていきます。
ポイントになるのは、数値の桁数がバラバラなので、どのようにしたら、必要な桁数の0(ゼロ)を数値の右側というか、後ろ側に表示することができるのでしょうか。
そこで、REPT関数をつかえば、0(ゼロ)を繰り返して表示することができます。
そして、LEN関数で、現在の桁数を算出させて、その値は、6から減算させれば、0(ゼロ)を何桁分追加すればいいのかが、わかります。
では、B2につぎの数式を設定し、オートフィルで数式をコピーします。
=(A2&REPT(0,6-LEN(A2)))*1
これで完成します。
この数式を確認しておきます。
最初の「A2&」で、A2の後ろに文字結合させるわけですね。
REPT関数の最初の引数は、繰り返す文字を設定しますので「0(ゼロ)」と設定します。
2つ目の引数が、繰り返す回数の引数です。
ここで、LEN関数をつかうことで、A2の桁数を算出することができますので、6桁で揃えたいので、6からLEN関数の算出結果を減算します。
これで、ほぼほぼ完成なのですが、この時点だと、文字数値型になっているので、計算には使うことができません。
そこで、数式の最後の「*1」を追加するというわけです。
「*1」を追加することで、数値型に戻るので、算出したい時などには、便利になります。
このように、数値の右側(後ろ側)に「0(ゼロ)」をつけて桁を揃えたい場合には、このような方法もあります。
今回は、RECEIVED関数~REPT関数までをご紹介しております。
RECEIVED関数
読み方: レシーブド
RECEIVED(受渡日,満期日,投資額,割引率,[基準])
割引債の償還価格を算出します
REDUCE関数
読み方: リディース
REDUCE(initial_value,array,function)
LAMBDA関数を各値に適用し、アキュムレータの合計値を返すことによって、配列を累積値に減らします
REPLACE関数
読み方: リプレイス
REPLACE(文字列,開始位置,文字列,置換文字列)
指定した文字数の文字列を置換する
REPLACEB関数
読み方: リプレイズビー
REPLACEB(文字列,開始位置,バイト数,置換文字列)
指定した位置からバイト数分の文字列を置換する
REPT関数
読み方: リピート
REPT(文字列,繰り返し回数)
文字列を指定回数だけ繰り返して表示する