アフィリエイト広告を利用しています
G-QVESCNWRVH

2023年12月21日

平日でも田舎には居ますねー! 変なのが(笑)

●今日・明日 休み

今日は、朝から息子が発熱と頭痛に悩まされ
今日、明日と休みを取りました
土曜日は元々休みでしたので・・・

ただ、別の仕事で京丹後に行く予定だったので
息子を放って行くのは・・・
●検査試薬

とりあえず、インフルエンザとかコロナかどうか
それを確認するために検査試薬を薬局に買いに行きました
歩いても良いんですが、10分ほどかかるので(笑)

車で(*^▽^*)
ヤバいですねー!
ダイエットの為にウォーキングしないとねー
●薬局の前でポカーン

で、薬局が近づくと、その狭い狭い駐車場に停めなければならないんですが
前に走るのが割と僕が好きそうなクーペタイプの車

よく見るとセンターラインよりで走っているので
その先の交差点で右折するのかなって思いました
01 運転動機が良く分からないドライバー-01.jpg

でも、そうでは無くて、お手本のようなキープレフト
01 運転動機が良く分からないドライバー-02.jpg
右折を止めて、直進しようとしているのかなって(^_-)

でも、スピードを緩めるので、交差点の先の狭い道路に対向車?
01 運転動機が良く分からないドライバー-03.jpg
と、思うと、やおら右ウインカーを出して右折して行きました
01 運転動機が良く分からないドライバー-04.jpg

何考えてんだ? キープレフトすべき時にセンターラインによって
センターラインよりに走らなければならない時にキープレフト
バッカじゃねーの?と思ってしまいましたー

01 運転動機が良く分からないドライバー-05.jpg

車はカッコいいのに、ドライバーの運転がダサすぎ(笑)
つり合いが取れてませんねー!
車負けしてる
●やれやれ

薬局の狭い狭い駐車場に注意深く停めて・・・なんだけど
その前にこんなところに路駐している奴がいる
02 出口付近の路駐.jpg

3mも離れてないよなー青ざめ

さてさて、検査試薬を購入してテストさせたら
見事に
1000007219.jpg
陰性でしたー(*^▽^*)

次の日曜日は、教会でもクリスマス
我が家でもクリスマス
なので、息子には治れーって言ってます(笑)





" allowfullscreen>

2022年11月14日

Excel VBAの勧め

Programming.jpg

●新システムへの顧客登録手順

当社の現行システムに登録されている顧客情報
これを新システムにも登録しなければなりません。
今年5月に第一拠点で新システムが稼働しました。

その稼働までに当社システムの顧客マスタ情報を
電子ファイルとして新システムの仕様通りに作成し
新システム顧客マスタに読み取らせました

約17万件ありましたが
電子ファイル作成時間は約3日
取込時間は約10分でした

ところが、現在では新システム稼働中なので
この方法がとれないとの事です。

どうするか?
手作業です

でも、取込後は、新規顧客については
当社現行システムと、新システムに
二重ではあるが登録していたらしいです。

でも・・・・
調査すると689軒の顧客情報を新システムに登録する必要があることが分かりました

この689軒分を通常手順で登録しなければならないとのこと
その通常手順は
@登録申請用フォームに入力する。 これは1顧客1ファイル
A親会社のマスタ登録部署に送付する
Bマスタ登録部署で手入力する
って手順です

先日の会議で、ベンダーさんが読み込ませることは既に終了している
このために、通常手順で登録するしかありません

そこで、当社の方では@の登録申請用フォームファイルを作成することとなりました。
●1枚仕上げる時間

先週金曜日、1ファイルに付き約2分かけて作成していました。
対象は689軒
すると・・・1378分 かかります

これって、約23時間です
●私が担当

今朝の朝礼で、登録申請書の作成状況を確認すると
先週金曜日に12軒分のファイルを作成したと・・・
当然、そればかりやってるわけではないので
15:43:00〜16:58:40の約1時間15分かかっていました。
すると、1枚当たり6分強
これにさっきの件数をかけると
72時間24分
こんな仕事で給料もらえるなんて・・・

ってバカな事やってられません!
●1枚仕上げる時間

ちょうど登録フォームはExcelファイル
なので、お得意のExcel VBA使って、一気に作っちゃおうと

で、Excel VBA (いわゆるマクロ)が出来上がりました!
マクロ作成時間は約1時間ちょい
そして、689個のファイルは
作成開始が 10:47:31
作成完了は 11:05:21
約18分でした
1枚当たり2秒ほど

よって、私は72時間分の仕事を1時間半足らずでやり遂げました!
1週間ほど遊んでようかなー(笑)
●時給換算

ちなみに、プログラムが出来る人はこのように効率化が出来ます。
72時間の仕事を1.5時間で出来るんだから
時給を1000円とすると、
72,000円分の仕事を1.5時間で仕上げた
時給換算すると48,000円になります。
このあたりを理解してほしいなぁ・・・
給与削減ばかりしないで・・・
タグ:Excel Excel VBA

2022年09月28日

おもしろ事件

ウケた〜.jpg

●新システム対応

今、私の部署では新システムに対応するために
  • システム仕様の変更
  • それに伴うブログラム開発・改修
  • 仕様変更に応じたマスタ修正
などをしています。

そして、人員が不足しているので、派遣の方にも手伝っていただいています。
●何しているの?

本日、派遣の方が、Excelファイルでなにやらしているので
何をしているのか聞いて見ると・・・・驚きの回答が
●25バイト以下

私の部署の責任者から頼まれた仕事で、
新システムの顧客マスタの顧客名を
当社システムの顧客マスタに登録する必要があるんだと

当社システムの顧客名称は25バイトまでなので
そこに収まるように、新システムの顧客マスタの名称を変更して登録

そのために、25バイトを超える名称については
全角カナを半角カナに変更することって
指示を受けて、一つ一つ入力し直しているんだって
●30分の1

いや、Excelなら関数があるから・・・
ASC関数って、全角カナ英数字を半角に変換する関数があるから

それを教えてあげたら・・・
私の機能の五時間が、一瞬でーーーーー
って大笑いしていました。

2021年09月16日

Excel : 便利な関数 Find(b) 関数

Excel tips Find(b)関数.jpg

●今回の関数は?

Find(b) 関数

●どんな時に使う?

プログラムソースコードから特定の命令コードを見つけて、見つかったらパラメータをチェックしたりとか
住所の中に特定の文字列が含まれているかチェックするとか

それから、ほかの関数、たとえば、Left(b)関数やMid(b)関数, Right(b)関数と組み合わせて使うことがよくあります。

結構、特殊な用途で使いますが・・・ただ、Find(b)関数が無かったら困ることもあります・・・
私の仕事が特殊だから???

●関数の使い方

この Find(b) 関数は、3つの引数(パラメータ)を取ります。

あっ、ここで一つ注意を・・・
Find(b) 関数って書いていますが、実際には
 Find 関数
 Findb 関数
をまとめて表しています。

で、違いはって言うと・・・

どちらも、対象となる文字列について、見つけた文字の位置を桁単位で返してくるか、Byte単位で返してくるかの違いがあります。
通常は桁単位で返してもらった方が扱いやすいですね。
でも、時にはByte単位で返してもらう必要があるときもあります。 例えば、印字場所を確認したりとか・・・

この文字数Byte数の違いって分かりますか?

詳しくは、Byteとは?に割と詳しく書いていますので、こちらをご覧くださいね

要点だけ言えば、
桁数は文字の個数
Byte数は、全角文字なら2、半角文字なら1
と覚えておいてください。

さて、Find(b) 関数の使い方は・・・

Find([検索する文字列]、[検索される文字列]、[検索開始位置])
です。

分かりにくいかもと思います。
例えば、"いろはにほへとちりぬるをわかよたれそつねならむ"の中に"ぬ"は入ってるかな?何文字目かな?って知りたい時に
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ")
って書きます。
この関数の結果は、10ですね。 ちょうど10文字目に”ぬ”がありますかね。

この使い方を見て、あれって思った人・・・観察眼が鋭いですね〜
最初の説明では、パラメータは3つありましたよね。
でも、このいろはの例では2つしか指定していません。

何で?
それは、3つ目のパラメータは、省略できるんです。 省略したら・・・1が指定されたものとして・・・つまり最初から検索しろよって意味なんですよね。

だから、
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ"、1)
って書いたのと同じ意味なんです。

もし、
=Find("ぬ"、"いろはにほへとちりぬるをわかよたれそつねならむ"、11)
って書いたらどうなるでしょう?

"いろはにほへとちりぬるをわかよたれそつねならむ"の11文字目以降に”ぬ”はありませんよね。
なので、エラー値が返ってきます。
その値は、#Value! ってなります。

まとめると、

=Find("い", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("ろ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("は", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ #VALUE!
=Find("に", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 4
=Find("ほ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 5
=Find("へ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 6
=Find("と", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 7
=Find("ち", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 8
=Find("り", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 9
=Find("ぬ", "いろはにほへとちりぬるをわかよたれそつねならむ", 4)   ⇒ 10

ってなります。

●注意すべき点は?

私が良く失敗するのは、一つ目のパラメータと二つ目のパラメータを逆に指定しちゃうことです。
どうしてかと言うと、VB(Visual Basic)とかVBAで、良く似た関数でINSTR関数ってのがあるんですが、この関数のパラメータは一つ目と二つ目がFind関数と逆なんです。
なんでー?って感じでしょ

まぁ、それは良いとして、逆に指定すると、

=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "い", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ろ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "は", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "に", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ほ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "へ", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "と", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ち", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "り", 4)   ⇒ #VALUE!
=Find("いろはにほへとちりぬるをわかよたれそつねならむ", "ぬ", 4)   ⇒ #VALUE!

ってなっちゃいます

この例なら間違えていることがすぐにわかりますが、一つ目も二つ目も両方ともセル参照や関数式なら、見つけるのは困難ですよ
●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー





2021年09月01日

Excel : 便利な関数 Trim 関数

Excel : 便利な関数 Trim関数.jpg


●今回の関数は?

Trim 関数 です。

●どんな時に使う?

文字通り使うとすると、文字列にくっついている不要な空白文字を切り取ってスリムにする・・・関数です。
でも、不要な空白をくっつけてセルに入力するなんてことはあまりしまんよね

すると・・・使い道がないじゃないかー!って思っちゃう人が多いでしょう。

でもね、もう一つ便利な使い方があるんですよ。

例えば、次の関数の結果はどうなるかお判りでしょうか?

If'("abcde" = "abcde ", "これは同じ文字列", "これは違う文字列")

正解だと思う方をクリックしてください。正解の場合にはそれらしい絵が表示されます

これは同じ文字列

これは違う文字列

さて・・・あなたの答えは正解でしたか?

このように、見た目同じように見えるのに(空白文字は表示されていても、表示されていないのと見分けがつきませんものね

このような時に、文字列の比較が必要な場合に、思わぬ予想外の動きをします。

なので、見えない文字は取り去って比較!
これが一番です。

特に、Vlookup 関数など、表から特定の文字列を探すときに重宝します。

また、Trim 関数の結果は文字列になりますから、変数が異なる事で見かけが同じ・・・ような場合、
単純に比較すると、異なるものとなりますが、比較対象を両方とも文字列にすることで、比較しやすくなります。
●とりあえず関数の使い方

この Trim 関数は、ただ1つの引数(パラメータ)を取ります。

さて、Trim 関数の使い方は・・・

Trim([値やセル参照])
です。

一つ目のパラメータで指定された値の、
・前の空白文字(半角もしくは全角)を切り取ります。
・後ろの空白文字(半角もしくは全角)を切り取ります。
・文字列の中に2桁以上の空白があれば、それを1桁にします。
そして、関数の返り値は空白が切り取られたあとの文字列となります。

たとえば、

=Trim("ABCDE   ") ⇒ "ABCDE"
=Trim("ABCDE") ⇒ "ABCDE"
=Trim(" ABCDE") ⇒ "ABCDE"
=Trim(" ABCDE ") ⇒ "ABCDE"
=Trim(" AB CDE") ⇒ "AB CDE"
=Trim("A B C D E") ⇒ "A B C D E"

などのようにです。

●注意すべき点は?

VBAでは、右側の空白を取り除く RTRIM関数、左側の空白を取り除くLTRIM関数がありますが、Excelの関数としては存在しません。
何故でしょう?
まぁ、必要になったらVBAでユーザー定義関数を作っちゃえばいいんですがね(^_-)-☆

●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー




2021年08月20日

Excel : 便利な関数 Right(b) 関数

Excel Tips Right(B)関数.jpg

●今回の関数は?

Right(b) 関数 です。

●どんな時に使う?

うーーーーん! この関数もLeft(b)関数と似ていて単独で使う事はあまりなかったような気がします・・・

この関数って、右側から何文字かを切り取るので、使用するシチュエーションと言えば・・・
みなさんもあまり使用することがないかもしれないですね。

うーん強いて言えば・・・

出てこーん(笑)



●とりあえず関数の使い方

この Right(b) 関数は、2つの引数(パラメータ)を取ります。

あっ、耳タコですが注意を・・・
Right(b) 関数って書いていますが、実際には
 Right 関数
 Rightb 関数
をまとめて表しています。

で、違いはって言うと・・・

どちらも、1つ目のパラメータで指定した文字列(式の値が文字列となるのもOk)から指定した数だけ左から切り取るんですが、Bのついていない方は単位は桁数(文字数)、Bのついている方は単位がバイト (Byte) なんです。

この文字数Byte数の違いって分かりますか?

詳しくは、Byteとは?に割と詳しく書いていますので、こちらをご覧くださいね

要点だけ言えば、
桁数は文字の個数
Byte数は、全角文字なら2、半角文字なら1
と覚えておいてください。

さて、Right(b) 関数の使い方は・・・

Mid([値やセル参照]、[切り取る桁数])
です。

一つ目のパラメータで指定された値を、二つ目のパラメータで示された数だけ切り取るかを指定します。そして、関数の返り値はその通りです。

たとえば、

=Right("私は日本人です。", 5) ⇒ "本人です。"
=Right("私は日本人です。", 4) ⇒ "人です。"
=Right("私は日本人です。", 3) ⇒ "です。"
=Right("私は日本人です。", 2) ⇒ "す。"
=Right("私は日本人です。", 1) ⇒ "。"
=Right("私は日本人です。", 8) ⇒ "私は日本人です。"
=Right("私は日本人です。", 9) ⇒ "私は日本人です。"
=Right("私は日本人です。", 10) ⇒ "私は日本人です。"
=Right("私は日本人です。", 11) ⇒ "私は日本人です。"
=Right("私は日本人です。", 12) ⇒ "私は日本人です。"

などのようにです。
ここで、『私は日本人です。』が8文字しかないのに、右から8文字とか9文字以上を切り取るよう指示したら、切り取れるだけ切り取る・・・動作となります。
エラーにはなりません。

●注意すべき点は?

特に・・・ありませんね。

●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー




2021年08月18日

Excel : 便利な関数 Mid(b) 関数

Excel Tips Mid(B)関数.jpg


●今回の関数は?

Mid(b) 関数

●どんな時に使う?

うーーーーん! Left(b)関数と似ていて単独で使う事はあまりなかったかなぁ・・・

なんとなく、経験から・・・
みなさんもあまりお目にかかることがないかも・・・
しいて言えば、何桁かの文字列を1文字ずつに分解する・・・なんて時に使いました。 これはシステム間でオンラインするときに、そのテキストがきちんと仕様書通りにできているか確認するときに使ったような・・・


●関数の使い方

この Mid(b) 関数は、3つの引数(パラメータ)を取ります。

あっ、ここで一つ注意を・・・
Mid(b) 関数って書いていますが、実際には
 Mid 関数
 Midb 関数
をまとめて表しています。

で、違いはって言うと・・・

どちらも、1つ目のパラメータで指定した文字列(式の値が文字列となるのもOk)から指定した数だけ左から切り取るんですが、Bのついていない方は単位は桁数(文字数)、Bのついている方は単位がバイト (Byte) なんです。

この文字数Byte数の違いって分かりますか?

詳しくは、Byteとは?に割と詳しく書いていますので、こちらをご覧くださいね

要点だけ言えば、
桁数は文字の個数
Byte数は、全角文字なら2、半角文字なら1
と覚えておいてください。

さて、Mid(b) 関数の使い方は・・・

Mid([値やセル参照]、[切り取る部分の先頭位置]、[切り取る桁数])
です。

一つ目のパラメータで指定された値を、二つ目のパラメータで示された部分から、三つ目のパラメータで示された数だけ切り取るかを指定します。そして、関数の返り値はその通りです。

たとえば、

=Mid("私は日本人です。", 3, 5) ⇒ "日本人です"
=Mid("私は日本人です。", 3, 4) ⇒ "日本人で"
=Mid("私は日本人です。", 3, 3) ⇒ "日本人"
=Mid("私は日本人です。", 3, 2) ⇒ "日本"
=Mid("私は日本人です。", 3, 1) ⇒ "日"
=Mid("私は日本人です。", 6, 2) ⇒ "です"
=Mid("私は日本人です。", 7, 2) ⇒ "す。"
=Mid("私は日本人です。", 8, 2) ⇒ "。"
=Mid("私は日本人です。", 9, 2) ⇒ ""
=Mid("私は日本人です。", 10, 2) ⇒ ""

などのようにです。
ここで、『私は日本人です。』が8文字しかないのに、左から8文字とか9文字め以降から、元の文字列より切り取る文字数が長い場合には、切り取れるだけ切り取る・・・動作となります。
エラーにはなりません。

●注意すべき点は?


●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー




2021年08月07日

Excel 便利な機能 − ByteとはPart.2

●脱線しまくり

桁数とバイト数の違いについて語るはずが、どんどん他の方へ行っちゃって

いつになったらバイトの話をするんやー!
ってお怒りの方も居られるかなーって
●バイトの本来の意味とは・・・

バイト本来の意味とは、情報量の単位って前にお話ししました。
ただ、その1バイトが256通りの値を持てることから、
アメリカで、数字やアルファベット(大文字・小文字)、記号に番号を振り、その番号で情報伝達を行おうと考えました。
つまり、
I love you
なら、
49 20 6c 6f 75 65 20 79 6f 75 (16進表記)
となります。
ここで、また16進表記なんて、実生活では(今のプログラミング環境でも)使われなくなってきている気がしますが、昔はこの16進表記が幅を利かせていました。
分かりにくいのでいつも使う10進表記に変えてみますね。
73 32 108 111 117 101 32 121 111 117
となります(あーしんど

コンピュータ・・・というよりかテレタイプライターで使われたんですね。
(その前はモールス信号でしょうか?)
テレタイプライターって・・・って話し始めたら、また記事の一つや二つはつぶしちゃうので、Google先生に任せるとして・・・
このような番号振りをコード化って言います。
そして、この文字の一つ一つに番号を振ったコードの体系を
この場合は、ASCII (読み方はアスキー)と言います
American Standard Code for Information Interchange の略です。
直訳すればアメリカ標準情報交換用コード って意味ですね。
●ASCIIだけでは

このASCIIコード、アメリカで使うだけなら、それで良かったんですが、日本でも使うときに、やはり日本語が表現できないと困る・・・ってんで
ASCIIコードを拡張して、半角カタカナを空いてる番号帯に割り振ったんです。
ここで、がぎぐげござじずぜぞ・・・なんかの濁点付きの文字や、
ぱぴぷぺぽ・・・なんかの半濁点付きの文字にも番号を振ると、1バイトの256以内に収まらなかったので、止む無く、濁点と半濁点はそれだけで1つずつの番号を振って、おなじみの
カ゛キ゛ク゛ケ゛コ゛サ゛シ゛ス゛セ゛ソ゛ や ハ゜ヒ゜フ゜ヘ゜ホ゜ と読みにくくなったわけです。

●よって

半角文字、つまり
・数字 (0〜9)
・英字 (a〜z、A〜Z)
・記号 (!,”,#,$,%などなど)
・制御文字 (Cr,Lf,Stx,Etxなどなど)
は1バイト文字と呼ばれ、これらの文字は 0〜255(10進表記)の範囲内に割り振られています。
ちなみに、SBCSと言われることもあります。
Single Byte Character Set (1バイト文字セット)って意味ですね。

これに対して、2バイト文字もあります。 DBCS Double Byte Character Setですよね。
このDBCSとは?って言うまでも無く、
全角文字ですよね。
そうです。漢字を含む多くの文字を表すには2バイト必要ですね。
2バイトの情報量なら、65536通りが表せますからね

でも、いつごろからか忘れましたが、XeroxがUnicodeなるものを提唱しました。
これは、いろいろな文字をコード化する時に、各社各様でコード化していたので、同じコンピュータ通しでもメーカーが違えば文字コードが異なり、そのまま解釈して表示とか印刷すると文字化けしちゃってました。

たとえば、
同じAでも ASCIIでは65、 半角文字コードでIBMで使用されているEBCDICでは193になります。
ちなみに、ASCIIの193って『チ』、EBCDICの65って『オ』

なので、AシステムがASCIIでAを送ると、65がIシステムに送られて、その65をEBCDICで解釈すると『オ』になっちゃいます。
逆に、IシステムがEBCDICでAを送ると、193がAシステムに送られて、その193をASCIIで解釈すると『チ』になっちゃいます。
一文字でもこんなにチンプンカンプンなのに、これが文章となるとえらいことになりますよね

と言う事で、全世界統一コード Unicode を提唱したんでしょうね。

この考えは素晴らしいと思います。
でも・・・・
ちょっとばかし問題が・・・

作ったのが西洋人なので、中国の漢字と日本の漢字で形が似ているのは同じとみなされたのか同じ番号(Code)が振られちゃってる事があります。

所って漢字は、
所って漢字.jpg
のように違っているのに、同じコードが割り当てられています。

なので、右側の漢字は日本語Windowsでは表示できない(はず)です。
まぁ、ちょっぴりな不都合には目をつむってUnicodeの意義に拍手を送りたいと思います。

でも、Unicode では、1文字を表すのに必要な情報量は・・・?
大抵は2バイト、時に4バイトってなってます。
あれれ?半角文字は1バイトじゃないの?って思われた方もいるのでは?

そうなんです。半角文字でも2バイトです。

●ここからが重要

真打は後からって言葉がありますが、ここまで読み進むのも疲れちゃったんじゃないかなって思います。

もう少しで核心にせまります・・・かも

ちょっと調べたんですが、Windows 10 64bit + Excel 2019 64bit で確かめたところ
セルに入力した文字列はどうやら、Unicodeで格納されているらしい。
しかも UTF-16って言う Unicode の符号化体系の一つで。

これは、Excelの関数とかではなくて、VBAで調べたので、正しそう・・・なんです。
なぜ、正しいって断定的に言わないかと言うと・・・

VBAのプロシージャにセルの中身を渡すとき、Excelが変換をしていない・・・とは限らないからです。
VBAでは、文字列はUnicodeで処理します。
なので、Excelがセルの中に入力されている文字列をVBAに渡すとき、Unicodeに変換している可能性がありありです。

セルに入力されている文字をExcelの関数を用いて調べたら、半角文字は1バイトJIS(ASCIIのカタカナ拡張版)と全角文字は2バイトJISコードでした。

セルに格納されている文字列が本当のところ、どんな文字コードで格納されているのかは確信をもってこれだって言えませんが、確かな事は

Excel関数でByte数で文字列を扱う関数は、半角文字は拡張ASCIIの1バイトコード、全角文字はJISの2バイトコードで扱われるって事でした。

この利点は、半角、全角って言うぐらいなので、プロポーショナルフォントと言う事をそれほど気にしなければ、半角文字の文字幅は全角文字の文字幅の半分です。

よって、表示時や印刷時に、Byte数を知ることで、表示に必要な幅や、印字に必要な幅を推定することが出来ます。





2021年08月03日

Excel 便利な機能 − Byteとは?

Byte.jpg

●文字列関数で出てくる 〜〜〜B

文字列関数専用目次で、それぞれの関数名のほとんどに (b) が付いています。
これは、末尾にbが付くと、処理対象の文字列をバイト(Byte)数で処理しろってことを表します。
●普通は対象が桁数

末尾にbが付いていないと、普通に桁数で処理するんです。
桁数は、普段から使っているので容易にイメージがわくと思います。

"私は日本人です。" は 8桁(最後の句点も含めますからね)
"私はJapaneseです。"は13桁

間違いようもないですよね。
●Bが付くと対象はByte(バイト)数

でも、bが付く関数を使うと、桁数ではなくて、バイト(Byte)数と呼ばれる数え方で数えられます。
これが曲者です。

バイト数って何?って思われる方も多いでしょう。

バイトって、0〜255までの256通りを表せる情報量だよって知ってる方もいるとは思います
●Byte数とはいったい何?

まぁ、ネットが発達して、世界中のネットが接続されているインターネットでは、ちまちまとバイト数を数えてなんてしていないんですが、システムを作ったりする場合、時としてこのバイト数を無視すると痛い目に遭うことがあります。

まず、Byte ですが、これは情報量の単位で、 Bit が 8個集まったものです。
そして、Bit は情報量の最小単位で、 2通りの何かを表します。
Yes/No はい/いいえ 0/1 などですね。
とりあえず、意味付けしたら、こんな風に2通りの値がとれます。

Yes/Noの組み合わせを8個集めたら、YesYesYesYesYesYesYesYesからNoNoNoNoNoNoNoNoまで256通りの値になります。

そして、このByteが最も簡単な文字コードセットを設定する便利な単位となります。

また、現在のコンピュータは、Byteの整数倍のデータ幅を持った、メモリやCPUで構成されています。

ごめんなさい。続きはのちほど




Byteのつづき・・・

2021年08月01日

Excel : 便利な関数 Left(b) 関数

Excel Tips 文字列関数 Left(B).jpg


●今回の関数は?

Left(b) 関数

●どんな時に使う?

うーーーーん! 単独で使う事はあまりなかったかなぁ・・・

なんとなく、経験から・・・
セルに入力されている文字の先頭の何桁かがどうのこうのって言うときに使うような気がしますね


●関数の使い方

この Left(b) 関数は、2つの引数(パラメータ)を取ります。

あっ、ここで一つ注意を・・・
Left(b) 関数って書いていますが、実際には
 Left 関数
 Leftb 関数
をまとめて表しています。

で、違いはって言うと・・・

どちらも、1つ目のパラメータで指定した文字列(式の値が文字列となるのもOk)から指定した数だけ左から切り取るんですが、Bのついていない方は単位は桁数(文字数)、Bのついている方は単位がバイト (Byte) なんです。

この文字数Byte数の違いって分かりますか?

それは、桁数とバイト数の違いとは・・?をご覧くださいね

要点だけ言えば、
桁数は文字の個数
Byte数は、全角文字なら2、半角文字なら1
と覚えておいてください。

但し、Excelの世界では、全角文字とか半角文字とかは内部データではUTF-16 (Unicode) で格納されているみたいで(VBA使って調べてみたんですが、そんな感じです。)
CODE関数で文字コードを調べると、当然文字コードなので、全角文字はJISコード(2バイト)、半角文字はASCIIコード(1バイト)が得られます。

話しが脱線しましたが、文字列関数のほとんどには桁数(文字数)で扱うものと、バイト数で扱うものが存在します。
なので、この違いを覚えておくことは、後々便利な機能を使いこなす上で重要です。

さて、Left(b) 関数の使い方は・・・

Left([値やセル参照]、[左から切り取る桁数])
です。

一つ目のパラメータで指定された値を、二つ目のパラメータで左から何文字切り取るかを指定します。そして、関数の返り値はその通りです。

たとえば、

=Left("私は日本人です。", 5) ⇒ "私は日本人"
=Left("私は日本人です。", 4) ⇒ "私は日本"
=Left("私は日本人です。", 3) ⇒ "私は日"
=Left("私は日本人です。", 2) ⇒ "私は"
=Left("私は日本人です。", 1) ⇒ "私"
=Left("私は日本人です。", 6) ⇒ "私は日本人で"
=Left("私は日本人です。", 7) ⇒ "私は日本人です"
=Left("私は日本人です。", 8) ⇒ "私は日本人です。"
=Left("私は日本人です。", 9) ⇒ "私は日本人です。"
=Left("私は日本人です。", 10) ⇒ "私は日本人です。"

などのようにです。
ここで、『私は日本人です。』が8文字しかないのに、左から9文字とか10文字とか、元の文字列より切り取る文字数が長い場合には、切り取れるだけ切り取る・・・動作となります。
エラーにはなりません。

●注意すべき点は?


●関連する関数

関連する関数・・・これは文字列関数専用メニューをご覧ください。

Excel Tips 文字列関数専用メニュー




ファン
検索
<< 2024年04月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリーアーカイブ
プロフィール
Y.Taki@AS400さんの画像
Y.Taki@AS400
IBM AS/400で稼働するシステムの開発・追加を担当して30年以上になります。使えば使うほどこの AS/400 が好きになりました。 こんなSEがいろいろな視点から様々な業務などについて語ります。
プロフィール