グッドデザイン賞を受賞したウォーターサーバー >>

セルA1の内容が、全角カタカナか半角カタカナか知りたいです。

エクセル関数又はマクロコマンドがあるはずだと信じて探していますが、見つかりません。TYPE関数では、セルの内容が数値か文字列かを調べられますが、その文字列がカタカナか英数字かなどを調べられません。ご存知の方はお教えください。

A 回答 (8件)

元の 文字列が、


セルA6に あるとして、
セル内が 全て、
全角片仮名かは、
=SUMPRODUCT((CODE(MID($A$6,COLUMN(OFFSET($A$1,0,0,1,LEN($A$6))),1))=ROW($A$9506:$A$9590))+0)=LEN($A$6)

半角片仮名かは、
=SUMPRODUCT((CODE(MID($A$6,COLUMN(OFFSET($A$1,0,0,1,LEN($A$6))),1))=ROW($A$177:$A$211))+0)=LEN(A6)

で 判りますよ。
    • good
    • 1
この回答へのお礼

一番わかりやすかったため、ベストアンサーにさせていただきました。
最終的には以下のようなコードで使用しました。
ありがとうございます!!

=IF(B18="",TRUE,OR(SUMPRODUCT((CODE(MID($B$18,COLUMN(OFFSET($A$1,0,0,1,LEN($B$18))),1))=ROW($A$9506:$A$9590))+0)=LEN($B$18),SUMPRODUCT((CODE(MID($B$18,COLUMN(OFFSET($A$1,0,0,1,LEN($B$18))),1))=ROW($A$177:$A$211))+0)=LEN($B$18)))

お礼日時:2019/04/15 10:20

全角・半角


=LENB(A1)<>LEN(A1)

英数が入らない場合の判定
=IF(LENB(A2)<>LEN(A2),IF(ASC(A2)<>T(A2),"全角カタカナ","全角ひらがな"),"半角カタカナ")

以下は趣旨が違うかもしれませんね。
これは、英字の判別ができません。
=IF(ISNUMBER(A1*1),"数字",IF(LENB(A1)=LEN(A1),"半","全")&IF(LENB(ASC(A1))=LEN(T(A1)),"カタ","かな"))


'//標準モジュール
Function CharType(ByVal strText As String)
Select Case True
Case strText Like "": ret = ""
Case strText Like "[ァ-ン]*": ret = "半角カタカナ"
Case strText Like "[0-9]*": ret = "数字"
Case strText Like "[A-Za-z]*": ret = "英字"
Case strText Like "[ァ-ン]*": ret = "全角カタカナ"
Case strText Like "[ぁ-ん]*": ret = "全角ひらがな"
Case strText Like "[一-龠]*": ret = "漢字"
Case Else: ret = "その他"
End Select
CharType = ret
End Function

記憶にある範囲なので、細かな文字の範囲は修正する必要があるかもしれません。
    • good
    • 1

[No.6]誤謬訂正、


=JIG(半角カナ)=全角カナ
の「G」は「S」の間違いでした。
    • good
    • 1

=CODE関数で調べたら如何でしょう。



半角カナは、半角読点、鍵括弧、区点、長音記号、濁点、半濁点を含んで、161~223 ですが、全角カナは 9505~9590 です。
一般に、
=ASC(全角カナ)=半角カナ
=JIG(半角カナ)=全角カナ
に変換可能だけど、次の全角カナに相当する半角カナは存在しません。
ヮ(9582)、ヰ(9583)、ヱ(9584)、ヴ(9585)、ヵ(9586)、ヶ(9587)
    • good
    • 1

VBAならこちらが参考になるかと。


http://officetanaka.net/excel/vba/tips/tips145.htm
    • good
    • 0

NUMBERSTRING関数を使って数値を漢字の2バイト文字にする。


そしてLENB関数で文字列のバイト数を数え、
元の値をLENB関数で文字列のバイト数を数え、
その二つを比較して、同じなら
 「1バイト文字の数字を含まない」
と判断することはできるけど、カタカナかあ。

JIS関数やASC関数で全半角を切り替えると、
カタカナだけでなく、アルファベットや数字も変わるからなあ。
関数だけを使う場合は一筋縄ではいかないと思う。
もしも英数字を含まないというのであれば、上記のようにLENB関数を使って文字列のバイト数を比較することで判断はできると思いますが、
現時点では何とも言えない状態です。
    • good
    • 0

全角半角変換なら、これで可能ですよ。


https://kokodane.com/kan35.htm
    • good
    • 0

半角を全角にしたいとかではなく、調べるだけですか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QExcelで「令和」と表示されるのは5月1日にならないとだめですか?

「日本の新元号に関する Office の更新プログラム」というページ(下記)で、
「Windows と Office の更新プログラムを適用済みの場合でも、Windows 上で実行されている Office 製品は 2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しませんのでご注意ください。」
と書かれています。
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era

今月4月中に、Excelのセルに来月5月以降の年月日を入力した場合に、自動で「令和」という元号を表示させることはできないのでしょうか。

もし、できるということであれば、「2019 年 5 月 1 日に新元号が開始されるまで、新元号を表示しません」とはどのような意味なのでしょうか。

Aベストアンサー

>こちらでは、「4月17日以降にOfficeも更新されれば「令和元年」と表示されると思います」と書かれているんですが

その方は、Microsoftの方ではないですし個人の予想ですよね?公式が出ているのにそれを持ち出してどうするんですか?

5/1より前に新しい元号を表示したい場合は数式や表示形式で限定的に表示させる方法を色々な方が考え付いていますよ。
検索すればたくさん出てきます。

Qエクセルの関数について

例年この時期に必ず苦労して困っています。質問させてください…
毎年毎年、販売個数を出すのに列を削除する方がいて、ミスが起きたり作り直しとか大変でとても困ってます。

列を削除してもSUMproductの関数がつかいたいのですが、

=SUMPRODUCT($C$3:(ADDRESS(3,(MATCH("枚数"),0)-1),1),C4:(ADDRESS(3,(MATCH("枚数"),0)-1),4)))

みたいな感じで考えて見たのですがエラーメッセージでお手上げです…

どうにか個数と書いたの手前の行までの掛け算をする数式ができないでしょうか

よろしくお願いします!

Aベストアンサー

又 訂正です、

=SUMPRODUCT(INDIRECT("C3:"&ADDRESS(3,MATCH("枚数",INDIRECT("C3:Z3"),0)+2)))

何度も 申し訳ない、
こっちですね。


そして応用編が、
=SUMPRODUCT(INDIRECT("C3:"&ADDRESS(3,IFERROR(MATCH("枚数",INDIRECT("C3:Z3"),0),COUNTA(INDIRECT("C3:Z3")))+2)))

此方は、
もし "枚数"記載列をも、
削除してしまっても、

まあ 取り敢えずは、
エラーには ならない、
式です。


確認くださいね。


後、
解説を ご所望に、
なられる場合は、

そう、
お申し付けくださいね。


追記、
いゃ〜、
楽しませて 頂きました、

久々に、
頭が 回る、
噛み応えの ある、
課題でした、

いい課題を 有り難うです。

QExcelです。 関数など、やり方を教えてください。 集会出来なくて困っています。

Excelです。
関数など、やり方を教えてください。
集会出来なくて困っています。

Aベストアンサー

あ、
済みません、
映像添付 忘れました。


お許しください。

Qパソコンに入っている文字

パソコン内に入っている文字を
B列にCDEFGはその文字にした場合のサンプルを書き出す
BVAを教えていただけないでしょうか。
バージョンは2013と2016で動くコードでお願いします。

Aベストアンサー

こういうのがあるみたいです。
ご希望に沿うかはわかりませんが。

http://tancro.e-central.tv/grandmaster/excel/tips-fontlist.html

Qエクセルでこんな事できますか?

添付エクセルのようにA列に任意の数字が歯抜けで入力したとき、その数字の入っているC列の同じ行(実際は、100行程ある)にだけ、数字の1を自動に入れたいのですが、、、詳しい方 教えてください。関数でも、マクロでも何でもかまいません。 よろしくお願いいたします。

Aベストアンサー

マクロならこうなります。

Sub TestSample1()
 With Range("A1", Cells(Rows.Count, 1).End(xlUp))
  .SpecialCells(xlCellTypeConstants, xlNumbers).Offset(, 2).Value = 1
 End With
End Sub

Qエクセルについて

自分では何をしてもお手上げなので詳しい方に教えていただきたいです。
画像の様な表(①)があったとして、表(②)の条件を満たす場所ごとに人数を数えたいです。表(②)は上から順に優先順位が高い順です。
しかしその時に条件があり、1つの条件に当てはまった人は他の条件には当てはめてはならないというものです。
例えば優先順位が最も高いA31の場所一はAさん、Hさん、Oさんの3人が当てはまります。
そうなると場所一の残りはVさん1人ということになり、次に優先順位が高いA32には当てはまらないのでA33に入って残りは0ということになります。

上記の例えのように集計するにはどうすれば良いでしょうか。毎日変動する何百とあるデータを集計しなければならないため、知恵をお貸しいただきたいです。

拙い文章で伝わりにくいかもしれませんが、回答よろしくお願いします。

Aベストアンサー

◆概要
I列~L列を作業列として、31~34行目の条件および重複防止から抽出します。
作業列に抽出した表からピボットテーブルを使って、②の表にする。
添付図参照です。データの配置も添付図のとおりです。

◆手順
1.I1~L1セルに条件の見出しを記入する。
2.I2セルに『=IF(AND(H2>=3,E2>=3),1,0)』を記入する。→31行目の条件
3.J2セルに『=IF(AND(G2>=2,E2>=3,I2=0),1,0)』を記入する。→32行目の条件と重複防止
4.K2セルに『=IF(AND(F2>=4,C2>=3,I2=0,J2=0),1,0)』を記入する。
5.L2セルに『=IF(AND(C2>=1,I2=0,J2=0,K2=0),1,0)』を記入する。
6.I2~L2を下方向にコピペする。
7.メニュー→挿入→ピボットテーブル とする。
8.データ範囲にB1~L27を選択して、OK。
9.『ピボットテーブルのフィールドリスト』のウインドウが表示される。
10.大きい箱にある『場所』『31』『32』『33』『34』にチェックを入れる。
11.行ラベルにある『場所』を列ラベルにドラッグして移動させる。
12.Σ値にある31~34をクリックして『値フィールドの設定』→『合計』に変更する。
13.ピボットテーブルで作った表を必要な場所にコピペして完成。


※当方が試したところ、手順13の表の『場所』(一~七)の並び順がずれました。
 同じことが起これば、必要に応じて並べ替えください。

※添付図のデータは、場所 一と二のみサンプルどおりに入力。三以降はでたらめです。

◆概要
I列~L列を作業列として、31~34行目の条件および重複防止から抽出します。
作業列に抽出した表からピボットテーブルを使って、②の表にする。
添付図参照です。データの配置も添付図のとおりです。

◆手順
1.I1~L1セルに条件の見出しを記入する。
2.I2セルに『=IF(AND(H2>=3,E2>=3),1,0)』を記入する。→31行目の条件
3.J2セルに『=IF(AND(G2>=2,E2>=3,I2=0),1,0)』を記入する。→32行目の条件と重複防止
4.K2セルに『=IF(AND(F2>=4,C2>=3,I2=0,J2=0),1,0)』を記入する。
5.L2セルに『=IF(AND(C2>=...続きを読む

Qマクロ無しで時間自動で記入をしていきたい

すごく贅沢な話なのですが・・・
マクロを使わず、通常のエクセルで時間を手入力でなく何かしらしたら(例:「1」と入力)自動で別セルに現在時刻ほ記載してくれる

マクロだと下記のような内容でやってます(一部)
Range("H3:K33").Select
Selection.Copy
Sheets("結果").Select
Range("A4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

マクロを使わずやれる方法はないでしょうか・・・

Aベストアンサー

論より 証拠、

作ってみました。


式、
=TEXT(IF(ISBLANK(B1),IF(ISBLANK(A10),B10,TODAY()),"此処が 変わります。"),"rr/mm/dd hh:mm")

ファイル、
https://1drv.ms/x/s!AjviygfJDgV_3GnS4Ko-q3mWU9fP

尚、
ファイルは 1度、
ローカルに 別名保存して、
其の保存ファイルを 扱うように、
してくださいね、

別名保存でないと、
意味が 無いですよ。


さすれば、
閲覧も、編集も、
叶うものと 思いますよ。

Q【関数】複数条件に応じてポイントをつけたい

お世話になっております。

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル K5~K18:担当者ID
➁赤色セル K4:部門コード
※画像添付いたします。

ポイント付与条件別表
黄色セル E列:担当者ID ※上記①と紐づく
ピンクセル F列:担当者に紐づく主担当部門コード ※上記➁と紐づく
※補足へ画像添付いたします。

★条件★
・基本
O列
①「達成額/未達成額」が0以上なら降順に10Pからポイント付与
➁「達成額/未達成額」が0orマイナスならポイント付与せず
※ただし、マイナスでも実績があればポイント付与

上記、基本条件に加えて、下記条件も組み込みたいです。
①担当者ID+主担当部門コードが紐づけはO列に10PからポイントMAX付与
➁担当者ID+主担当部門コード以外だったら該当ポイントの1/2付与
かつ、「達成額/未達成額」が0orマイナスなら1/2のポイントの半分付与

何卒、よろしくお願いいたします。

お世話になっております。

条件によってポイント付与する数式を組みたいのですが
条件が複雑で、どのような関数を組めば良いか、関数の知識も乏しく頭を悩ませております。
詳しい方教えて頂けないでしょうか?

K列 担当者ID
L列 計画
M列 実績
N列 達成率
O列 達成額/未達額
P列 ポイント付与欄

上記のようなデータがあります。

下記条件で、O列「達成額/未達額」の降順にポイントを付与したいです。
その際、下記の条件でポイントを付与したいのです。

ポイント集計先
①黄色セル...続きを読む

Aベストアンサー

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRANK.AVR関数を使います。)
*マイナスのポイントは排除したいので、MAX関数でゼロと比較して正の値のみを採択します

追加条件込みの方は、以下です。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0)*IF(VLOOKUP($K5,$E$3:$F$1000,2,FALSE)=$K$4,1,IF($O5>0,0.5,0.25)),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*担当IDから担当部門コードの検索にはVLOOK関数を使います。VLOOK関数が正常に動作するには、担当IDに漏れがない事と番号順に並んでいる事が必要ですので、これ前提で考えて下さい。
*追加条件に準じ、ポイントを1倍したり、0.5倍したり、0.25倍したり、しました。

まず基本条件の方からいきます。
1.セルP5に 「 =IF($M5>0,MAX(10+1-RANK.AVG($O5,IF($M$5:$M$1000>0,$O$5:$O$1000,"")),0),"") 」を入力します。
2.必要なだけ下方向にコピーします。(完了)

*RANK.AVG関数で”達成額/未達成額”の順にランキング(1~)をつけ、11から差し引く、という方法をとります
*”実績”がマイナスのものはランキング付けそのものから除外するので、IF関数で検索対象の配列を絞り込みます
(IF関数に配列を入れたら答えも配列で返してくれるので、その絞り込んだ配列に対してRAN...続きを読む

Q「最小化」したファイルが元のサイズに戻ってしまう。

よろしくお願いします。

Excel 2010におきまして、例えば「A」という名前のファイルを開いていて、そのファイルを閉じずに「最小化」して、別の「B」というファイルを開いた際、「A」のファイルが自動で「最小化」が解除されてしまいますが、それを自動にて解除されないように設定することはできますでしょうか?

教えて下さい。

Aベストアンサー

Aファイルの最小化でExcelそのものを最小化したのでしょうか?

この場合だと、Bファイルをエクスプローラなどから開くと。同じ
インスタンスで開くので、Aファイルを開いたExcelでファイルが
立ち上がるので、別インスタンスとしてのExcelを立ち上げてから
Bファイルを開くようにしないと、最小化したものも同じExcel上で
立ち上がるので、元のAファイルも戻ります。
https://www.atmarkit.co.jp/ait/articles/0708/10/news133.html
これはExcel2013以降でも基本的に同じ動作をします。
(No.1の回答者さんが書いているのは、このことを簡潔に回答)

別インスタンスで立ち上げる方法は幾つかあります。以下のサイト
での[送る]を使った方法が一番簡単ではないかと思うので、試して
みてはいかが。。
https://www.atmarkit.co.jp/ait/articles/0708/10/news133_2.html

他に、[ファイル名を指定して実行]でコマンドラインとして /x を
付け、別インスタンスでファイルを起動する方法などもあります。
https://support.office.com/ja-jp/article/Microsoft-Office-%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81-079164cd-4ef5-4178-b235-441737deb3a6#ID0EAABAAA=Excel

Aファイルの最小化でExcelそのものを最小化したのでしょうか?

この場合だと、Bファイルをエクスプローラなどから開くと。同じ
インスタンスで開くので、Aファイルを開いたExcelでファイルが
立ち上がるので、別インスタンスとしてのExcelを立ち上げてから
Bファイルを開くようにしないと、最小化したものも同じExcel上で
立ち上がるので、元のAファイルも戻ります。
https://www.atmarkit.co.jp/ait/articles/0708/10/news133.html
これはExcel2013以降でも基本的に同じ動作をします。
(No.1の回答者さんが書い...続きを読む

QExcel関数 賞味期限が何%経過したかを求める式

Excel関数 を教えてください!

賞味期限が何%経過しているかを求める式が作れません。

例 賞味期限 2020/07/01 (製造から未開封で30ヵ月)
この商品は、2019/01/23日時点では賞味期限は何%過ぎたことになるのでしょうか?

これが作れないと残業から解放されず、睡眠不足で辛いです。どうか助けてください。宜しくお願いします。

Aベストアンサー

A1のセルに製造日、B1のセルに賞味期限を日付で入れる(ただし、賞味期限は製造日からのカウントの場合)

例えばA1=2018/01/01、B2=2019/07/01として、
=(TODAY()-A1)/(B1-A1)
を計算させると、今日までで何割消化したかがでてきます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング