No.4ベストアンサー
- 回答日時:
こんにちは。
A1 に文字列があるとして、
このような式で、取り出せます。
=IF(MAX(IF(ISERROR(MATCH({"ト","屋"},MID(A1,ROW($A$1:$A$256),1),0)),0,MATCH({"ト","屋"},MID(A1,ROW($A$1:$A$256),1),0)))=0,A1,LEFT(A1,MAX(IF(ISERROR(MATCH({"ト","屋"},MID(A1,ROW($A$1:$A$256),1),0)),0,MATCH({"ト","屋"},MID(A1,ROW($A$1:$A$256),1),0)))))
配列数式ですから、一旦式を入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押します。
お礼が遅れました、大変失礼しました!!
上記の式でやってみたらうまくいきました
配列式ですね。
しかし、、、素晴らしいです・・・!!
ここまで思いつきもしません。
このような式が立てられるのはやはり日々の使いこなしと
才能なのでしょうか。
No.6
- 回答日時:
こんにちは。
#4 のWendy02 です。果たして、マクロという解決方法が有効なのかはわかりませんし、質問者さんが、ここをフィードバックするかは分かりませんが、ちょっとかんがえてみました。これは、条件的には「並び替え」が済んでいないと、何の役にも立ちません。
データのある列の一番上に、セルポインターを持ってきてから、マクロを実行します。そのセルから下に範囲を選択して実行します。
現在のところ、例えば、右隣のセル A列にあるのなら、B列に出力するように作られています。
'<標準モジュール>
Sub SamePickup()
Dim myCol As Range, c As Range, i As Long, j As Long
Dim myData() As String, buf As Variant
'元のデータの一番上の場所にマウスポインターを置くこと
Set myCol = Range(ActiveCell, ActiveCell.End(xlDown))
If myCol.Count = 1 Then Exit Sub
For Each c In myCol.Cells
ReDim Preserve myData(1, i)
buf = SameAbove(c) 'ユーザー定義関数へ
If c.Value <> buf Then
myData(0, i) = buf
If buf <> "" Then
myData(1, i) = Application.CountIf(myCol, buf)
End If
End If
i = i + 1
Next
For Each c In myCol.Cells
For j = LBound(myData, 2) To UBound(myData, 2)
If myData(1, j) <> "" Then
If InStr(1, c.Value, myData(0, j)) > 0 Then
'右隣のセルに出力する
c.Offset(, 1).Value = myData(0, j)
End If
ElseIf myData(1, j) = "s" Then
c.Offset(, 1).Value = myData(0, j)
End If
Next j
Next
End Sub
Private Function SameAbove(ByVal myRng As Range)
Dim i As Integer, num As Integer, Ret As Variant
Set myRng = myRng.Cells(1, 1)
If myRng.Row <> 1 Then
i = 1
Do
num = InStr(1, myRng.Offset(-1).Value, Mid(myRng.Value, 1, i))
If num = 0 And i = 1 Then
i = Len(myRng.Value): Exit Do
ElseIf num = 0 And i > 1 Then
i = i - 1: Exit Do
End If
i = i + 1
Loop Until i > Len(myRng.Value)
Ret = Mid(myRng.Value, 1, i)
Else
Ret = myRng.Value
End If
SameAbove = Ret
End Function
関数ならずとも、こちらまでご丁寧にアドバイスくださってありがとうございます。
自分でも判断したとおり条件が曖昧なのです。
関数式はうまくいきました。
こういったデータは何らか自分で加工も必要かと思いました。
VBAですが”はじめての”級の本で最近 勉強中です。
日常仕事をしていると思った通りのデータで渡されるわけではないので
データ処理は奥が深いと思いました。
◆すみません、お礼の言葉から外れてますね。
No.5
- 回答日時:
私製関数をつくって見ました。
VBEの標準モジュールに
Function samea(a)
Dim cl As Range
fst = "y"
For Each cl In a
If fst = "y" Then
b = cl
fst = "n"
Else
k = 0
For i = 1 To WorksheetFunction.Min(Len(cl), Len(b))
If Mid(cl, i, 1) = Mid(b, i, 1) Then
k = k + 1
Else
GoTo p01
End If
Next i
p01:
b = Mid(b, 1, k)
End If
Next
samea = b
End Function
をおきます。
結果を出したいセルに=samea(A6:A8)のように範囲指定してください。
先頭からの共通文字列を返します。
お礼のコメントが非常に遅くなり大変失礼しました。
VBEでオリジナルを作ってくださってありがとうございます。
これもまたうまく行きました。
ありがとうございます
エクセルには色々なやり方があるのですね
どこか必ず共通する法則が自分できちんと読めないと(事前に加工も)
関数もVBAもダメなんだと思いました。
No.3
- 回答日時:
A列のデータを見ると“屋号”+“支店名”となってるようですが
“屋号”のみ抜き出したいと言うことでよろしいでしょうか?
おそらく指定の形式に抜き出すのは無理です。
仮に抜き出す条件を“上または下のデータと同じ部分があれば抜き出す”としたとして
A列 B列
ABCマート柳沼店 ABCマート
ABCマート朝霞店 ABCマート
ABCマート朝霞店 ABCマート朝霞店
越後屋 新潟本店 越後屋
越後屋 燕店 越後屋
となってしまうはずです。
つまりA列にまったく同じデータが連続してあった場合、
A列のデータをそのままB列に代入してしまいます。
でてくる屋号が決まってるならやりようはあると思いますが。
大変失礼しました。お礼、相当遅くなりました!!(締め切り間違いしました)
お詫び申し上げます。
おっしゃるとおり屋号に決まりがないのです。
No.2
- 回答日時:
#1のmshr1962です。
すみません。コピーする数式を間違えました。
=IF(ISERROR(FIND(" ",ASC(A2))),A2,LEFT(A2,FIND(" ",ASC(A2),1)-1))
が正解です。
No.1
- 回答日時:
ABCマート 柳沼店
越後屋 新潟本店
のようにスペースで分けられているなら
=LEFT(A2,FIND(" ",ASC(A2),1)-1)
ただし、スペースがない場合、元の文字列を表示なら
=IF(ISERROR(FIND(ASC(A2),"* *")),LEFT(A2,FIND(" ",ASC(A2),1)-1),A2)
早速のご返答 ありがとうございます!!
ご配慮のとおり スペース無しもあります
しかし 結果が#VALUE!となってしまいます。どうしてなんでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- メンズ 靴が安い店ってどこですか?(リアル店舗で) 5 2022/12/19 21:12
- Instagram ABCマートの店員になんぱされました楽しくお話していたところ4つ上の方にインスタ交換しようと言われた 2 2022/12/28 17:06
- ウォーキング・ランニング ウォーキングシューズをランニングシューズとして使っても大きな問題ないですかね? ABCマートのアプリ 3 2023/01/29 15:34
- シューズ・ブーツ ABCマートのこの靴何と検索すれば出てくるでしょうか??時間が無かったので写真だけ撮って家で調べよう 4 2022/10/05 05:05
- 誕生日・記念日・お祝い 女友達の誕プレでお菓子買ったんですけどあげる時の入れ物にABCマートの紙袋は流石にダメですか? お菓 4 2023/08/09 12:14
- Visual Basic(VBA) vbaエクセルマクロについて教えてください A列とD列が下のようになっています B列、C列にも何かし 2 2023/02/20 20:06
- シューズ・ブーツ Reebokの布製の靴 3 2023/01/07 14:44
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
- その他(ファッション) Timberlandのブーツについて教えてください。 いわゆる6インチのが欲しくて、店で探してます。 1 2022/09/04 12:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelはなんで先頭の0を消すん...
-
Excel元に戻す方法を教えてくだ...
-
【Microsoft Office Excel Comp...
-
Excelが固まってしまった。
-
西暦や和暦の表示をyyyymmdd表...
-
Excel 2019 のピボットテーブル...
-
【関数】スペースがいくつ入っ...
-
【Excel】セル内の時間帯が特定...
-
excelの不要な行の削除ができな...
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excelのセルを飛ばして入力する
-
Excel初心者です。 詳しい方、...
-
エクセルの行の抽出について質...
-
Excel初心者です。 詳しい方、...
-
【マクロ】エクセルにかいてあ...
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシート クエリ関数 1...
-
エクセルで指定した日付、店舗...
-
Excelのグラフ軸について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報