No.1
- 回答日時:
mshr1962です。
ちょっと説明が難しいのですが...MID(A1,3,{1,2,3,4})はA1の3桁目から1桁,2桁,3桁,4桁の文字を返します。
VALUE関数で数値化した場合、文字があると#VALUEのエラーになります。
NOT関数とISERROR関数で数値ならTRUE,文字(エラー)ならFALSEに置換しています。
SUMPRODUCTでTRUEを1,FALSEを0として加算しています。
上記でCR1テープなら1,CR9999テープなら4を返します。
要は何桁目までが数字かの判定を行っています。
最後にMID関数で3桁目から数字の桁分を抽出します。
ただこれは文字なので数字にするため+0しています。
各関数の詳細はヘルプで確認してください。
No.2ベストアンサー
- 回答日時:
ご本人のご説明と併せて読んで見てください。
(1)前問の例で、OS1235着物23455と言う文字列があるとします。
OSは2桁でいつも固定と言う例です。
(2)=MID(A1,3,LEN(A1)-2)で「1235着物23455」となります。この部分に注目します。
(3)この1235の部分が1桁(OS1)、2桁(OS23)、3桁(OS321)、4桁(OS4321)、のいずれの場合も有りえるので、その桁数をどう捉えるかが問題です。
その桁数は、次に文字である「着物」が現れたところで桁数が決まりますよね。
(4)幸いISNUMBERという「数値(数字文字ではない)を判別する関数」が有りそれを使えそうです。
「1235着物23455」がC1にあるとします。
=ISNUMBER(MID($C$1,1,1)*1)*1は1を判別していて1
=ISNUMBER(MID($C$1,2,1)*1)*1は2で1
=ISNUMBER(MID($C$1,3,1)*1)*1は3で1
=ISNUMBER(MID($C$1,4,1)*1)*1は5で1
=ISNUMBER(MID($C$1,5,1)*1)*1は着で0
「*1」はISNUMBER関数が文字列数字1等だとTRUEにならないので*1して、数値化している。
それで数字文字の時TRUEが返るが、それを1にするために*1している。
そして上例は4桁という例ですが、4は1+1+1+1+0と加えた数が桁数を表して入ることを見ぬく。
その和を出すために
SUMPRODUCT関数を使う。
(5)もう一つ難しいのはMID($C$1,3,1)の3の部分で、第1式では1、第2式では2のようになって、変化してくれなければ(しなければ)なりません。
これに配列数式{1,2,3,4}を使います。
この辺は経験しないと、思いつかない難しい点と思います。OKWEB回答でも初出?
(6)結局
=MID(C1,1,SUMPRODUCT(ISNUMBER(MID($C$1,{1,2,3,4},1)*1)*1))
と入れて、SHIFT+CTRLキーを押しつつ、ENTERキーを押すと、式の前後に{と}がついて、上例では
SUMPRODUCT(ISNUMBER(MID($C$1,{1,2,3,4},1)*1)*1)
が4を返すので、=MID(C1,1,4)になって、「1235」を返す。あと「OS」を結合すると商品コードが出ます。
残り後半は
=MID(A1,上記長さ+1、LEN(A1)-上記長さ+1)
=MID(A1,LEN(C10)+1,LEN(A1)-LEN(C10)+1)
のようになります。着物23455です。
この回答へのお礼
お礼日時:2004/08/06 09:17
細かい補足を丁寧にありがとうございました。
ただ今現在では全てを理解することが出来ないのであとでゆっくり印刷したものと私のファイルを比較して確認していってみようと思います。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
maruru01です。余計混乱するかも知れませんが、せっかくなのでB1の別解を。
=--MID(A1,3,COUNT(-MID(A1,3,{1,2,3,4})))
基本的な考え方は、No.1の方と同じで、VALUE関数の変わりに「-」(-1を掛けるということ)を使用しています。
さらに、SUMPRODUCT+NOT+ISERRORを、COUNT関数1つにしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- その他(エンターテインメント・スポーツ) こちらのバンド名分かりますか? 2 2022/06/16 22:57
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) エクセルの計算式について教えて下さい。 sheet1のA1セルの値をsheet2のB1セルに返し、尚 1 2022/05/25 11:32
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 【至急】エクセル条件付き書式について教えてください A1:C3 E1:G3 からなる9マスずつの2つ 10 2023/07/28 12:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報