• ベストアンサー

先頭のとなりの数字のみ抽出

下のような段が1000段くらいあります。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー  TRUE 9←を抽出したい  TRUE 2  TRUE 3  FALSE 4  FALSE 4  TRIE 6←を抽出したい TRUE 3  FALSE 2 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー このようにセルに数字とTRUEとFALSEが入力してあるのですが 連続して並んだ最初のTRUEの隣の数字のみ(上の例の「←を抽出したい」の数字)抽出しなければいけません。 こんなケースの場合に役に立ちそうな関数か手法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

A列にTRUEやFALSEがあってB列に数値があるのでしたらC1セルに次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A1="TRUE",A2="TRUE"),B1,"") TRUE9などと数値と一体でA列にあるとしたらB列に次の式を入力して下方にオートフィルドラッグします。 =IF(AND(LEFT(A1,4)="TRUE",LEFT(A1,4)=LEFT(A2,4)),RIGHT(A1,LEN(A1)-4),"")

その他の回答 (6)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.7

No2です TRUEの隣の数字のみというのを見逃していました If Range("A" & i).Value = Range("A" & i + 1) And flg = False Then のところを If Range("A" & i).Value = Range("A" & i + 1) And Range("A" & i) = True And flg = False Then もしくは(TRUEが文字列として入っている場合) If Range("A" & i).Value = Range("A" & i + 1) And Range("A" & i) = "TRUE" And flg = False Then に変更してください。

  • a987654
  • ベストアンサー率26% (112/415)
回答No.6

No3,5です。御免なさい修正すべきところを間違えなした。 ただしくは >B2セルに =RIGHT(TRIM(A1),1) →B1セルに =RIGHT(TRIM(A1),1) >B3セルに  =IF(AND(LEFT(TRIM(A1),2)="FA",LEFT(TRIM(A2),2)="TR"),RIGHT(TRIM(A2),1),"") →B2セルに  >B4セル以降は必要分だけコピー B3セル以降は必要分だけコピー 重ね重ね失礼しました。

  • a987654
  • ベストアンサー率26% (112/415)
回答No.5

No3です。 ミスプリをしました。 >エクセルであり、A1からデータが質問の表記通りに数値まで →エクセルであり、A2からデータが質問の表記通りに数値まで に変更してください。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

解答No1です。 2行目からデータがあるとして次のように式を変えてください。 A列にTRUEやFALSEがあってB列に数値があるのでしたらC2セルに次の式を入力して下方にオートフィルドラッグします。 =IF(AND(A1<>"TRUE",A2="TRUE",A3="TRUE"),B2,"") TRUE9などと数値と一体でA列にあるとしたらB列に次の式を入力して下方にオートフィルドラッグします。 =IF(AND(LEFT(A1,4)<>"TRUE",LEFT(A2,4)="TRUE",LEFT(A2,4)=LEFT(A3,4)),RIGHT(A2,LEN(A2)-4),"")

  • a987654
  • ベストアンサー率26% (112/415)
回答No.3

単純なミスプリでしょうか? それとも相当な罠を張った質問でしょうか?(だとしたら悪質) 1.エクセルと考えてよいのでしょうか? 2.”TRUE 9”というのは1つのセルに文字として記載されて  いるのでしょうか、それとも列が分かれているのでしょうか? 3.先頭にブランクがあったり、なかったり   文字と数字の間にブランクがあったりなかったり 4.>TRIE 6←を抽出したい  この部分は他はTRUEとなっているのにここだけ違います。 てなところで エクセルであり、A1からデータが質問の表記通りに数値まで 文字列で1つのセルに入っているものと仮定して次のように なります。 B2セルに =RIGHT(TRIM(A1),1) B3セルに  =IF(AND(LEFT(TRIM(A1),2)="FA",LEFT(TRIM(A2),2)="TR"),RIGHT(TRIM(A2),1),"") B4セル以降は必要分だけコピー 以上

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

Sub test() Dim i Dim flg As Boolean flg = False For i = 1 To Range("A" & Rows.Count).End(xlUp).Row If Range("A" & i).Value = Range("A" & i + 1) And flg = False Then Range("C" & i).Value = Range("B" & i).Value flg = True Else Range("C" & i).Value = "" If Range("A" & i).Value <> Range("A" & i + 1) Then flg = False End If End If Next i End Sub というマクロでいかがでしょう

関連するQ&A