人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です。前回の質問を一つにまとめました。
エクセルのマクロまたは関数でお願いします。

Sheet2に参照をおきます。
A列 B列
1 青森
2 岩手
3 秋田

C列 D列
1 docomo
2 ezweb
3 softbank

データと答えはSheet1に出します。
A列(データ) B列 C列(答え)
3_01 3 秋田
2_02 2 岩手
1_01 1 青森

上記の参照はSheet2のA列B列です。

データと答えはSheet1に出します。
D列(データ) E列(データ) F列(答え)
aaaa 3 aaaa@softbank
bbbb 1 bbbb@docomo
cccc 2 cccc@ezweb

上記の参照はSheet2のC列D列です。


上記の1行目はいずれも項目行です。
データおよび答えは2行目からにお願いします。



●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:DoCoMo EZweb SoftBank エクセル データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Silvanus
●40ポイント

下記URLにエクセルワークブックを置きました。

http://rct3jp.info/hatena/hatena_inosisi4141_110429.xls

恐らく、こんな感じで宜しいのではないかと思いますが、いかがでしょうか。

◎質問者からの返答

早速ありがとうございます。

下記の答え以外はOKです。

質問の説明が不足していました。

Sheet1の

B列の数字はA列の_の前の数字の部分を抜きだしたものです。

A列の数字1文字または2文字を抜き出して直接参照より答えをC列に

出しても

B列に一旦だしてそれを参照と照合してCの答えにしてもOKです。

Sheet1

A列(データ) B列 C列(答え)

3_01 3 秋田

2_02 2 岩手

1_01 1 青森

11_01 11 群馬

上記はA列の_から前の数字を抜き出してB列に表示する関数があればOKです。

A

よろしくお願いします。


2 ● きゃづみぃ
●30ポイント ベストアンサー
Sub main()
Dim a As Long
Dim b As Long

s1 = "Sheet1"
s2 = "Sheet2"

For a = 2 To Sheets(s1).Range("A2").End(xlDown).Row
 c = Sheets(s1).Cells(a, "A")
 If InStr(1, c, "_") > 0 Then
 d = Left(c, InStr(1, c, "_") - 1)
 d = Val(d)
 For b = 2 To Sheets(s2).Range("A2").End(xlDown).Row
 If Sheets(s2).Cells(b, "A") = d Then
 Sheets(s1).Cells(a, "C") = Sheets(s2).Cells(b, "B")
 Exit For
 End If
 Next b
 End If
 
 d = Sheets(s1).Cells(a, "E")
 For b = 2 To Sheets(s2).Range("C2").End(xlDown).Row
 If Sheets(s2).Cells(b, "C") = d Then
 Sheets(s1).Cells(a, "F") = Sheets(s1).Cells(a, "D") & "@" & Sheets(s2).Cells(b, "D")
 Exit For
 End If
 Next b
Next a

End Sub

◎質問者からの返答

ありがとうございました。

D列データを文字列にしてからやるのが良いですね。

途中でエラーに引っかからないように準備が必要でした。

でも上手くゆきましたありがとうございました。

関数でやるより時間がかかるみたいですが後処理が無い分

結果的に早く作業が終わるみたいです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ