別カテゴリで投稿していたので投稿し直します。
簡単に説明すると、A1に入れた文字列から、BにあるワードをDに、CにあるのはFに、Aに貼り付けたら自動で抜き出すようにしたいです。
B列にという単語
○○
××
△△
C列には
5×1
5×2
10×1
という文字を並べます。
A1の入力箇所に「○○ 5×1 オリジナルブレンド」という文を入れた場合
D1のセルに「○○」、F1に「5×1」とそれぞれ抜き出した結果が出るようにしたいです。
シートの作成はgoogleスプレッドシートで行っています(Excelでも大丈夫です)
A1に入る文字は必ず同じ順番や同じ文字数で入るとは限らないです。
○○○○ 10×10となる場合や、5×1 ○○となっている場合もあります。
A列に貼り付ける文字が100件以上を超えるので、自動で判別できたら助かります。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
No.4~6です。
何度もごめんなさい。
ユーザー定義関数にしてしまうと、データ変更のたびに再計算され
砂時計がくるくる回って「応答なし」の状態になってしまいます。
すなわちユーザー定義関数はおススメしません。
単純にマクロを1回走らせるだけの方が良いと思います。
どうも失礼しました。m(_ _)m
No.6
- 回答日時:
No.4・5です。
>A1の入力箇所に「○○○○ 10×10」という文を入れた場合・・・
相当厄介ですね。
また、関数での方法をご希望だというコトですが当方の力ではお手上げです。
とりあえず、前回同様ユーザー定義関数になりますが、
> ○○○○ 10×10 のような場合でも対応できるようにしてみました。
尚、Mac版のExcelは使ったことがないのでWindows版のExcelになりますが・・・
前回のユーザー定義関数は消去し、↓に変更してください。
Function myStr(c As Range, myRng As Range)
Dim k As Long
Dim r As Range, buf As String
For Each r In myRng
For k = 1 To Len(c)
If Mid(c, k, Len(r)) = r Then
buf = buf & r
k = k + Len(r) - 1
End If
Next k
Next r
myStr = buf
End Function
※ Mac版のVBE画面の出し方は↓のサイトが参考にならないでしょうか?
http://gadgets-geek.blog.jp/archives/1044111301. …
https://hamachan.info/mac/excel-kaihatsu/
(後者のサイトの最後の方の画面で、メニューの「Visual Basic Editor」をクリックすればVBE画面が表示されるような気がします)
Mac版のExcelが手元にないので確かめるコトができませんし、
ユーザー定義関数が使えるかどうかも不明です。m(_ _)m
No.5
- 回答日時:
No.4です。
投稿後に補足を拝見しました。
前回の数式はA1セル内にダブって存在するとお望みの表示になりません、
あくまで一つだけが存在する!という前提の式でした。
(作業用のセルを設ければ可能かもしれませんが、
手っ取り早く、この質問限定(ユーザー定義関数)にしてみてはどうでしょうか?
(Excelでの方法になります)
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペーストしてください。
Function myStr(c As Range, myRng As Range) '//この行から//
Dim r As Range, buf As String
For Each r In myRng
If InStr(c, r) > 0 Then
buf = buf & r
End If
Next r
myStr = buf
End Function '//この行まで//
そして、Excel画面に戻り(VBE画面を閉じて)
D1セルに
=myStr(A1,B1:B7)
F1セルに
=myStr(A1,C1:C7)
という数式を入れてみてください。
※ 通常のワークシート関数と同じように使えますので
範囲は好みで変更してください。m(_ _)m
No.4
- 回答日時:
こんにちは!
横からお邪魔します。
>B1〜B7の中にあるワードから該当するものを・・・
一例です。
尚、B列・C列とも1~7行目は空白セルがないようにしておいてください。
(7行目まで埋まらない場合は「*」などまず使用することはないと思われる文字でつぶしておきます)
D1セルに
=IF(OR(ISNUMBER(FIND(B1:B7,A1))),INDEX(B1:B7,SUMPRODUCT(ISNUMBER(FIND(B1:B7,A1))*ROW(B1:B7))),"")
F1セルに
=IF(OR(ISNUMBER(FIND(C1:C7,A1))),INDEX(C1:C7,SUMPRODUCT(ISNUMBER(FIND(C1:C7,A1))*ROW(C1:C7))),"")
※ どちらも配列数式になりますので、Ctrl+Shift+Enterで確定!(←必須★)してください。m(_ _)m
No.3
- 回答日時:
こんにちは
セルの位置関係がクリアではないので、以下の様に仮定しています。
・元となる文字列はA1セルにある
・B列の文字列群は、仮にB1:B3と仮定
その上でエクセルの関数式として回答します。
D1セルに
=IFERROR(INDEX(B:B,AGGREGATE(15,6,INDEX(ROW(B$1:B$3)/(FIND(B$1:B$3,A1)>0),,),1)),"")
を設定することで、ご質問のような結果になると思います。
F1セルの式も同様にすることで、算出可能でしょう。
※ 関数式の限界として、複数の文字列がヒットしてしまった場合でも最初の値しか返しません。
※ Googleスプレッドシートとのことですが、「(Excelでも大丈夫です)」とありましたので、上記はエクセルの関数での回答です。
スプレッドシートに、上式に対応している関数があるのかどうかは知りません。
最悪の場合は、ユーザ関数にすれば対応可能ではなかろうかと想像します。
No.2
- 回答日時:
念のため確認です。
A1の入力箇所に「○○ 5×2 おりじなる△△ブレンド」という文を入れた場合は次のどれになりますか?
① D1が「○○」F1が空欄
② D1が「○○」F1が「5×2」
③ D1が「○○△△」F1が「5×2」
A1の入力箇所に「○○○○ 10×10」という文を入れた場合は次のどれになりますか?
④ D1が「○○」F1が空欄
⑤ D1が「○○」F1が「10×1」
⑥ D1が「○○○○」F1が「10×1」
No.1
- 回答日時:
細かい部分まで希望どおりになっているかわかりませんが。
D1 の式
=IF(COUNTIF($A$1,"*" & B1 & "*"),B1,"")
E1 の式
=IF(COUNTIF($A$1,"*" & C1 & "*"),C1,"")
もし A1 に対して B および C 列の 2行目以降も比較するなら上記の式を下に向けてコピーしていけば良いかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
早速のご回答ありがとうございます。
表に入れてみたのですが、
A1に入れた文字からは、B1とC1に入れたもののみ抜き出す状態になりました。
A1に入れてB1〜B7の中にあるワードから該当するものを抜き出す場合どうしたら良いでしょうか。
=IF(COUNTIF($A$1,"*"&B1:B7&"*"),B1:B7,"")
と入れてみましたがやはりB1とC1からしか抜き出せず、D1が空欄になりました。
ご回答ありがとうございます。
>A1の入力箇所に「○○ 5×2 おりじなる△△ブレンド」という文を入れた場合は次のどれになりますか?
③D1が「○○△△」F1が「5×2」
>A1の入力箇所に「○○○○ 10×10」という文を入れた場合は次のどれになりますか?
⑥ D1が「○○○○」F1が「10×1」
とさせたいです。
2件ご回答ありがとうございます。
先程回答していただいた内容は問題なく表示できました。
今回仰っている通りの、Aにダブりがあると表示ができないというところまで確認できました。
ちょうどそれを聞こうと思っていましたので、察して頂き助かります。
エクセルは使用出来る環境ですが、
使用OSがMacで、「挿入」や他の項目を探しても「標準モジュール」が見つかりませんでした。
普段WIN使用なのでMacに詳しくないもので…(Macは仕事で使ってます)申し訳ないです。
関数のみで対応することは難しいでしょうか