No.4ベストアンサー
- 回答日時:
こんにちは!
横からお邪魔します。
↓の画像のようにSheet2に表があり、Sheet1のB列に表示するようにしてみました。
他の方々と同じようにVBAになってしまいます。
Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
尚、Sheet1のデータは1行目からあるとします。
Sub Sample1() 'この行から
Dim i As Long, k As Long, n As Long, c As Range, buf As String, myArray
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
wS1.Columns(2).ClearContents
For i = 1 To wS1.Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = ""
If InStr(wS1.Cells(i, 1), ",") > 0 Then
myArray = Split(wS1.Cells(i, 1), ",")
For k = 0 To UBound(myArray)
Set c = wS2.Columns(1).Find(What:=myArray(k), LookIn:=xlValues, LookAt:=xlWhole)
n = c.Row
buf = buf & wS2.Cells(n, 2) & ","
Next k
wS1.Cells(i, 2) = Left(buf, Len(buf) - 1)
Else
Set c = wS2.Columns(1).Find(What:=wS1.Cells(i, 1), LookIn:=xlValues, LookAt:=xlWhole)
n = c.Row
wS1.Cells(i, 2) = wS2.Cells(n, 2)
End If
Next i
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
No.6
- 回答日時:
もしも、変換すべき文字列の種類数が少ない場合は、VBA ではなく手動での置換(Ctrl+H)でもいいですね。
置換したいセル範囲を選択した状態でこのショートカットキーを押し、表示されるダイアログ中のオプションボタンを必要に応じて押せば、No.2 さん・No.3 さんのコードと同じ処理ができます。No.5
- 回答日時:
こんにちは。
以前作った関数です。
---ここから、VBAのコード---
Function a_vlookup(s As String, r As Range, c As Integer, f As Boolean) As String
Dim ss() As String
Dim i As Integer
Dim aa As String
aa = ""
ss = Split(s, ",")
For i = LBound(ss) To UBound(ss)
On Error Resume Next
ii = CInt(ss(i))
If Err.Number = 0 Then
aa = aa & WorksheetFunction.VLookup(ii, r, c, f) & ","
Else
aa = aa & WorksheetFunction.VLookup(ss(i), r, c, f) & ","
End If
Err.Clear
On Error GoTo 0
Next
aa = Left(aa, Len(aa) - 1)
a_vlookup = aa
End Function
---コードここまで---
標準モジュールにコードを張り付けて、セルに一般の関数と同じように
=a_vlookup( … と入力します。
引数は、vlookupと同じです。(ただし、第4引数の省略は不可になっています。省略する場合はコードを改造してください。)
No.3
- 回答日時:
101,1A2のような文字が有る場合には関数で対応するよりもマクロで置換の操作をするのがよいでしょう。
例えばA1セルからA100セルにかけてお示しのような文字が並んでいるとして、D1セルから下方に101,1A2のように文字が入力されておりE1セルから下方に対応するりんご、みかんなどの文字が並んでいるとしたら次のようにすればよいでしょう。
シート見出しで右クリックして「コードの表示」を選択します。
表示の画面の右側に次のコードを入力します。
Sub 置換()
Dim i As Integer
Range("a1:a100").Select
For i = 1 To Cells(Rows.Count, "d").End(xlUp).Row
Selection.Replace What:=Cells(i, "d"), Replacement:=Cells(i, "e"), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next i
Range("a1").Select
End Sub
マクロの操作は「開発」タブの「マクロ」から「置換」を選択して「実行」をクリックすればよいでしょう。
No.2
- 回答日時:
>101 → りんご
>1A2 → みかん
これだけなら、隣の列にVLOOKUP関数を並べてりんごやミカンを計算して表示させるのがふつーのエクセルの使い方です。
が、
>101,1A2 → りんご,みかん
こういう何でもアリな事をしたいというのでしたら、一般的な簡単操作ではできません。
次の通りに操作してください。
手順:
シート2のA列に101や1A2を列記する
隣のB列にりんごやミカンを並べておく
シート1に101や1A2や101,1A2を記入する
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
sub macro1()
dim h as range
on error resume next
for each h in worksheets("Sheet2").range("A1:A" & worksheets("Sheet2").range("A65536").end(xlup).row)
worksheets("Sheet1").cells.replace what:=h.value, replacement:=h.offset(0, 1).value, lookat:=xlpart
next
end sub
ファイルメニューから終了してエクセルに戻る
ALT+F8を押し、マクロ1を実行する。
#説明
101をりんごに、1A2をみかんに、それぞれ丁寧に置換の操作をしていけば、特に難しい操作は何もなしに結果を得られます。
でも手を動かすのはメンドクサイので、マクロでそれを自動でつるつるっとやらせます。
No.1
- 回答日時:
このPCではExcelが使用できないので大雑把になりますが、
数値と文字の対応表をシートに作成し、そこをlookup関数で参照すればいいと思います。
参考URL:http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
整数行を残し小数点の行を削除...
-
Excel(VBA)データ入力に応じて...
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
excel ある部分だけをコピペし...
-
エクセル並べ替え VBA
-
エクセル2003でマクロをおこな...
-
エクセル VBA 小数点を含む数字...
-
Excel2007 セルを右方向に削除...
-
エクセルで連番をマクロで
-
エクセルで全ての数字間にカン...
-
Excel にて非表示行を探すワー...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
別シート参照のセルをシート毎...
-
excelでシート毎の最終更新日を...
-
前の(左隣の)シートを連続参...
-
VBAでシートコピー後、シート名...
-
シート名ではなく、相対位置で...
-
エクセルで、「1つ前のシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excel2007で、太字にした行のみ...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
Excel(VBA)データ入力に応じて...
-
excel ある部分だけをコピペし...
-
Excelでセル内の数式は残し値だ...
-
Excel にて非表示行を探すワー...
-
整数行を残し小数点の行を削除...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
-
「マクロ」の足し算の式を教え...
-
エクセル2003でマクロをおこな...
-
エクセル マクロ オートシェ...
-
並べ替えのマクロで対象行の範...
-
エクセルで作る名簿をいつもあ...
-
yyyy/mm/ddの日付に一括変換す...
-
エクセルで連番をマクロで
-
値貼り付けをしても書式も貼り...
-
Excelで周期的に列を削除する方法
おすすめ情報