質問するログイン新規登録

回答編集履歴

1

数値の文字列長を3から可変長に修正

2017/09/10 01:54

投稿

退会済みユーザー
answer CHANGED
@@ -2,23 +2,22 @@
2
2
  いらない部分は、B列を値として貼り付けした後にDELすれば元通りになりますね。
3
3
 
4
4
  ---
5
+ **(saziさんのコメントを受け2017-09-10に修正)**
5
6
 
6
- ![あきらめるに早い](519eb7aae54c122f868f2f2fb1ab76f4.png)
7
+ ![あきらめたらそこで試合終わりやで](9959b54c1223358bf5169ff7038a1391.png)
7
8
 
9
+ |アドレス|式|説明|
10
+ |:--|:--:|:--:|
11
+ |A2|文字列|生データ|
12
+ |B2|数式|右から抜き取った最寄りの数値|
8
- B2 `=MID(A2,LEN(A2)-C2-D2-2,3)`
13
+ |C2|`=E2-D2+1`|抜き取る文字長|
14
+ |D2|`=MAX(F$1:T$1)-MATCH("!",V2:AJ2,0)+2`|抜き取り開始位置|
15
+ |E2|`=MAX(F$1:T$1)-MATCH("!",F2:T2,0)`|抜き取り終了位置|
16
+ |F2|`=IF(LEN($A2)>=F$1,IF(ISERROR(VALUE(MID($A2,F$1,1))),IF(ISNUMBER(G2)=TRUE,"!","-"),VALUE(MID($A2,F$1,1))),"-")`|数値のエッジ検出1|
17
+ |~T2|F2のオートフィル|数値のエッジ検出1|
18
+ |U2|ブランク|計算式同士が衝突しないため|
19
+ |V2|`=IF(LEN($A2)>=V$1,IF(ISERROR(VALUE(MID($A2,V$1,1))),IF(ISNUMBER(U2)=TRUE,"!","-"),VALUE(MID($A2,V$1,1))),"-")`|数値のエッジ検出2|
20
+ |~AJ2|V2のオートフィル|数値のエッジ検出2|
9
21
 
10
- C2 `=LEN(A2)-MAX($E$1:$S$1)`
11
22
 
12
- D2 `=MATCH("OK",F2:S2,0)`
13
-
14
- E2 `=IF(COUNT(T2:V2)=3,"OK","NG")`
15
-
16
- (中略オートフィルしてください)
17
-
18
- T2 `=IF(LEN($A2)>=T$1,IF(ISERROR(VALUE(MID($A2,T$1,1))),"",VALUE(MID($A2,T$1,1))),"")`
19
-
20
- (中略オートフィルしてください)
21
-
22
- ---
23
-
24
- もしこれを使う上で分からないところありまたらコメントください。
23
+ ※実証コードのため、「数値がないとき」にエラー出るかもれませんがその辺は割愛させてください。