- ベストアンサー
特定の文字があった場合、その文字を抜き出して
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBAでやることをお勧め。 データの組換えは関数では式が長くなりがち。本件は、そうでもないようだが。 例データ Sheet1 A1:B15 Astore a1 a2 a3 Bstore b1 b2 b3 b4 Cstore c1 c2 c3 ーー 結果 Sheet2に A1:B10 Astore a1 Astore a2 Astore a3 Bstore b1 Bstore b2 Bstore b3 Bstore b4 Cstore c1 Cstore c2 Cstore c3 ーーーー VBAのコードは、標準モジュールに Sub test01() Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") maestore = "" k = 1 re = sh1.Cells(100000, "A").End(xlUp).Row ' MsgBox re For i = 1 To re If Cells(i, "A") <> "" Then If sh1.Cells(i, "A") Like "*store" Then maestore = sh1.Cells(i, "A") sh2.Cells(k, "A") = maestore Else sh2.Cells(k, "A") = maestore sh2.Cells(k, "B") = sh1.Cells(i, "A") k = k + 1 End If End If Next i End Sub 計数列は存在して、処理が必要なのだろうが、質問の結果の方に書いてないので略。
その他の回答 (1)
- SI299792
- ベストアンサー率47% (774/1618)
ワークエリア使う方法しか思いつきません。 Sheet1 B2: =IF(COUNTIF(A2,"*store"),-B1,ABS(B1)+(A2>"")) 下へコピペ Sheet2 A1: =Sheet1!A1 A2: =IFERROR(INDEX(Sheet1!A:A,MATCH(1-ROW(),Sheet1!B:B,0)),A1) B1: =IFERROR(INDEX(Sheet1!A:A,MATCH(ROW(),Sheet1!B:B,0)),"") B2: B1をコピペ。 纏めて下へコピペ。 画像がグーグルスプレッドシートっぽいですが、Excel ですか❓ この数式ならどちらでもできますが。