EXCELで条件により文字列を変化させる関数を使いたいのですが、うまくいかないのでアドバイスをください。
気温情報を毎日インターネットから得て加工したいのです。
具体的には、
高い北海道
変わらず京都
低い東京
などのような、気温+地名からなる文字列が得られるのですが、これらの文字列から、「高い」「変わらず」「低い」といった部分だけを消して、地名だけを残したいのです。
「高い」「変わらず」「低い」のどれが表示されるかは日によって異なるので、どれが出てもそれらを消せるような関数を作りたいのです。
たとえば、A1セルに、「高い東京」「変わらず東京」「低い東京」
のどれが入っても、結果として「東京」だけ残るようにしたければどのような関数にすればよいのでしょうか?
IF関数を複数使うんだろうとは思うのですが、素人なので手が出ません。どうかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
Ifは使いませんが・・・置換えています。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"高い",""),"変わらず",""),"低い","")
No.2
- 回答日時:
◆いろんな方法があるでしょうが、一例です
=REPLACE(A1,1,LOOKUP(10^10,1/(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<10000)*ROW(INDIRECT("1:"&LEN(A1)))),)
No.3
- 回答日時:
A1セルに"~東京"と入っているとして
=IF(LEFT(A1,4)="変わらず",RIGHT(A1,LEN(A1)-4),IF(LEFT(A1,2)="高い",RIGHT(A1,LEN(A1)-2),IF(LEFT(A1,2)="低い",RIGHT(A1,LEN(A1)-2),A1)))
これで"変わらず東京"でも"高い東京"でも”低い東京"でも東京になります。
意味としては
left(A1,4)は、left関数はA1のセルから左4文字を取る
len(A1)は、A1セルの文字列の長さを取得する
right(A1,LEN(A1)-4)は、A1セルの右側からA1セルの文字列-4を引いた文字数分だけ抜き出す(4を引くのは"変わらず"の文字数でA1の文字数から"変わらず"の文字数を引いた文字数:この場合残りは2文字で東京)
ifは、if(条件式,条件を満たすならこの値が入る,条件を満たさないならこの値が入る)
です。
例ではifの関数が入れ子になっていて判りにくいですが、すべて条件を満たさないときは次の条件となってます)
かなりわかりにくいけど、応用は効くと思います。
No.4
- 回答日時:
こんばんは。
関数ではありませんが、マクロでやれば簡単です。
標準モジュールに登録してください。
最初に、以下の設定範囲の部分を書き換えてください。一列でも、複数列でも可能です。
Private Const PREFECT_LIST = "北海道,青森,岩手,秋田,宮城,山形,福島,新潟,富山,石川,福井,長野,茨城,栃木,群馬,埼玉,千葉,神奈川,山梨,東京,岐阜,静岡,愛知,三重," & _
"滋賀,京都,兵庫,奈良,和歌山,大阪,鳥取,島根,岡山,広島,山口,徳島,香川,愛媛,高知,福岡,佐賀,長崎,熊本,大分,宮崎,鹿児島,沖縄"
Private PreFect_Lists As Variant
Sub PickupPrefecture()
Dim i As Integer
Dim buf As String
Dim sFind As Variant
Dim rng As Range
Set rng = Range("A1:A100") '設定範囲
'リストの生成
If Not IsArray(PreFect_Lists) Then
Do
buf = Replace(PREFECT_LIST, " ", "", , , vbTextCompare)
Loop While i > InStr(buf, " ")
PreFect_Lists = Split(buf, ",")
End If
Application.ScreenUpdating = False
For Each sFind In PreFect_Lists
With rng
.Replace _
What:="*" & sFind & "*", _
Replacement:=sFind, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows
End With
Next
Application.ScreenUpdating = True
End Sub
No.5
- 回答日時:
例えば、
「東 京」のように文字間にスペースがあったり、なかったり
「北海道は高いが、京都は変わらず」のような変則的なデータ
などへの対応を考えれば、この手の問題は VBA + RegExp を使った方が
手っ取り早いかも。
標準モジュールに下記コードを貼り付けた後、ワークシートのセルに
= GetPref(A1)
と数式を入力して下さい。
' // 都道府県名抽出
Public Function GetPref(ByVal sTarget As String) As String
Const PREF = "(北海道|" _
& "青森|岩手|秋田|宮城|山形|福島|" _
& "東京|神奈川|埼玉|千葉|茨城|栃木|群馬|山梨|" _
& "新潟|長野|" _
& "富山|石川|福井|" _
& "愛知|岐阜|静岡|三重|" _
& "大阪|兵庫|京都|滋賀|奈良|和歌山|" _
& "鳥取|島根|岡山|広島|山口|" _
& "徳島|香川|愛媛|高知|" _
& "福岡|佐賀|長崎|熊本|大分|宮崎|鹿児島|" _
& "沖縄)"
GetPref = GetKeyword(sTarget, PREF)
End Function
' // 正規表現パターン sPattern にマッチするキーワードを抽出する
' // 複数マッチした場合はカンマで連結
Public Function GetKeyword( _
ByVal sTarget As String, _
ByVal sPattern As String _
) As String
Dim MC As Object ' MatchCollection
Dim m As Object ' Match
Dim sBuf As String
sTarget = Replace$(sTarget, " ", "")
sTarget = Replace$(sTarget, " ", "")
With CreateObject("VBScript.RegExp")
.Pattern = sPattern
.IgnoreCase = False
.Global = True
Set MC = .Execute(sTarget)
End With
If MC.Count > 0 Then
For Each m In MC
sBuf = sBuf & m.Value & ","
Next m
GetKeyword = Left$(sBuf, Len(sBuf) - 1)
End If
Set MC = Nothing
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- Excel(エクセル) Excelのtextbox 1 2022/04/15 15:26
- 政治 東京都と日本の少子化対策 9 2023/01/08 23:54
- Excel(エクセル) EXCELで、漢字のみ抽出する式を教えてください。 6 2022/04/27 14:40
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- メディア・マスコミ 台湾のコロナ死者5,049人。 ワクチンってあまり意味ないのですか? 1 2022/06/18 22:58
- Excel(エクセル) Power Query でのデータの一括修正について 2 2022/05/10 02:00
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
九州の女性は何故気が強い人が...
-
「経て」の読み方は?
-
福岡市は名古屋市より都会、も...
-
宮崎は陸の孤島で交通アクセス...
-
神戸市と福岡市、どちらが都会...
-
名古屋市と福岡市は街並みなど...
-
●●け?と語尾に「け」をつける...
-
・<九州人は先祖に多大な朝鮮...
-
東北と九州では、どちらが美人...
-
しよらーん、この言葉が方言だ...
-
アルプスメイトというアイス。
-
愛知県から九州へフェリーに車...
-
コンボボックスにリストが表示...
-
一番都会の都市から順位をつけ...
-
九州は関東と関西どっちですか...
-
大学3回生ですが、今年から授...
-
九州人は基本的に東北人を見下...
-
千葉から九州にフェリーで帰り...
-
西南学院大or福岡女子大
-
新入社員ですが、来年3月に寿退...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「経て」の読み方は?
-
九州の女性は何故気が強い人が...
-
福岡市は名古屋市より都会、も...
-
エクセルで1~47の数字を各都道...
-
お樽という風習ご存知ですか?
-
●●け?と語尾に「け」をつける...
-
長崎では「来崎」、では他県は?
-
「インド人の黒んぼ」の由来
-
神戸市と福岡市、どちらが都会...
-
「〜ですね」という言葉は他県...
-
JR 途中下車扱いで枝分かれした...
-
福岡と大阪の中間地点はどこで...
-
鮮魚を送る方法
-
〜しよる とはどこの方言ですか...
-
外国産のアサリは危険ですか?
-
北九州市と川崎市はどちらが都...
-
コンボボックスにリストが表示...
-
名古屋市と福岡市は街並みなど...
-
「来+地名」の言い方
-
福岡の方言って「やん」「あか...
おすすめ情報