- ベストアンサー
Excel VBA 別シートのデータ取得後 検索
ブックAを開いています。 シートは「2013年1月」と「作業項目」の二つあり、 2013年1月にはカレンダーを作成しております。 また作業項目にはA1から順にA2,A3....と 文字列が記載されています。 この文字列をA1から順番にカレンダーの方で検索していき、該当すれば赤色に変更したいです。 (※セル内全ての文字列ではなく、該当文字列のみ赤色に変更) 宜しくお願い致します。
- nimu_nimu
- お礼率100% (2/2)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 セルにどのようなデータがあるのかがわかりませんが、 例えば作業項目のセルに 21:00 を入れていると 実際には 21:00:00 となってしまい >資料作成(21:00~) が検索で見つからない可能性があります。 よって >Set rf = ws2.Cells.Find(What:=r.Value, LookIn:=xlValues, LookAt:=xlPart) >myReg.Pattern = r.Value 上記2つを Set rf = ws2.Cells.Find(What:=r.Text, LookIn:=xlValues, LookAt:=xlPart) myReg.Pattern = r.Text と差し替えてみて下さい。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
シート名は実際の名前に修正してください。 Sub try() Dim myReg As Object Dim match As Variant Dim ws1 As Worksheet Dim ws2 As Worksheet Dim r As Range Dim rf As Range Dim sr As String Set myReg = CreateObject("VBScript.Regexp") myReg.Global = True Set ws1 = Worksheets("Sheet1") ' 作業項目シート Set ws2 = Worksheets("Sheet2") ' カレンダー? With ws1 For Each r In .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)) Set rf = ws2.Cells.Find(What:=r.Value, LookIn:=xlValues, LookAt:=xlPart) If Not rf Is Nothing Then myReg.Pattern = r.Value sr = rf.Address Do For Each match In myReg.Execute(rf.Value) rf.Characters(Start:=match.Firstindex + 1, Length:=match.Length).Font.ColorIndex = 3 ' フォントカラーを赤 Next Set rf = ws2.Cells.FindNext(rf) Loop Until rf.Address = sr End If Next End With Set myReg = Nothing Set rf = Nothing End Sub こんな感じでしょうか?
お礼
ご回答有難うございます。 先ほど試した結果、文字列の色変更が無事出来ました。 1点お伺いしたいのですが、記号(主に括弧やコロン)を含んだ文字列で同様の作業は出来るでしょうか? (例) 資料作成(21:00~) お答えしていただいたのにも関わらず、不躾な質問となり申し訳ございませんが 宜しければご教示願います。
関連するQ&A
- エクセルVBAをつかってフォルダ内のファイルの特定シートのデータを1つのシートにまとめる
はじめまして。 過去ログ検索しましたが、載っていないようなので投稿させていただきます。 ブックAがあるフォルダ内にある「○年*.xls」のさらに「○月(○月以外のシートもあり)」のシート内の特定のセル(範囲は固定されてます)の文字列を、全てブックAの1つのシートにまとめたいのですが、VBAにてこれは可能ですか? フォルダ内のファイルが複数だったり、またそのファイル内の該当シートが1つだったり複数だったりで、かなり行き詰ってます。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2000を使用しております。
- ベストアンサー
- オフィス系ソフト
- 【エクセル】データ抽出する関数の使い方
データを抽出するのに、今までVlookupなどを使っていました。 今回2つの項目(下記の表だと月と色)を指定して、抽出したいです。 Sheet1(元データ) A B C 1 月 色 値段 2 01 赤 4532 3 02 赤 1495 4 01 白 10012 5 03 赤 7568 6 02 白 78964 7 01 緑 78932 8 02 緑 7894 9 上記のような表から、下記のような形にデータを抽出したいです。 Sheet2 A B C D E 1 色 1月値段 2月値段 3月値段 2 赤 4532 1495 7568 3 白 10012 78964 4 緑 78932 7894 5 … 6 … Sheet2の色の項目内(A列)の順番は決まっています。 色に対応する、月ごとの値段の出し方がわかりません。 Sheet1のデータは2000行弱くらいの量です。 月は3月までです。説明不足名ところがありましたら 追記いたします。 ※重要なのが元データのシートで作業列などを追加することが出来ませ ん(色と月を結合した列を追加などが出来ません)。Sheet2のセル内 に関数を記入するだけで今回のようなことは可能 でしょうか。 すみませんがご指導よろしくお願いいます。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA データを別シートに書き込む
エクセルの、あるシートのデータを、別シートの項目条件の一致するセルに 書き出す方法を教えていただけますでしょうか? 元のシートには A列 B列 C列 ID番号 年月日番号 金額 ID番号 年月日番号 金額 ID番号 年月日番号 金額 ・ ・ ・ ・ ・ ・ という形で、データが入っています。各列でデータには重複はありますが、 A列とB列の内容が共に同じという行は、ありません。 これを列項目がID番号、行項目が年月日番号の、金額を参照する表にしたいのです。 新しいシートのA列に降順に全ID番号を、1行目に同じく全ての年月日番号をいれ、 元のシートのC列データ(金額)を新しいシートの該当セルに書き込むには どのようにすればいいでしょうか?このような感じで‥。 月日1 月日2 月日3‥‥ ID1 金額 金額 金額 ID2 金額 金額 金額 ID3 金額 金額 金額 ・ ・ ・ 実は元のシートは10枚ほどあり(期間で区切っています)、おまけに各シートには 登場しないID番号もあります。 そこで、すべてのID番号と年月日番号をまとめ、ひとつのシートにしたいと考えた次第です。 1枚のシートならばピボットテーブルで何とかなるのですが、それをまとめようとすると、 データの量が膨大で、PCがとまってしまう(のか計算が終わらない気が‥) VBAを使えば何とかなるのかもと思いまして、質問いたしました。 エクセルは2007です。 どうぞよろしくお願いいたします。
- 締切済み
- その他MS Office製品
- Excel VBA セル内の文字列操作について
例えば、A列(A2より下のセル)のセル内にある文字列が、それぞれ対応するB列(B2より下のセル)のセル内にあった場合、該当文字列のフォントの色を変えたい(例えば「赤」)のですが、VBAで一括処理とかできるのでしょうか? <例> A列 B列 テスト このテストは・・・ → 「テスト」の部分のみ赤色にしたい。 サンプル サンプル → 文字列全部分の「サンプル」を赤色にしたい。 どうかご教示の程よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- EXCEL VBA 別シートで検索後、貼り付け
excel2010 (ブック名A.xlsx)にシート名SA、シート名SBがあります。 シート名SAのC列に検索対象(C1~C50位)があり シート名SBのB列が検索範囲(流動的ですがB1~B100位の範囲)です。 検索対象は文字列で、これが検索範囲のセルにに含まれていた場合 検索範囲の隣のセルCxxに検索対象文字列をコピー&ペーストしたいです また、検索範囲の行数に値があるまで、順次処理をしていきたいです
- ベストアンサー
- Excel(エクセル)
- エクセル 複数シートのデータを別ブックにまとめる
月毎の実績表を作ろうとしています。 構成は、7~6月の12枚シートでひとつのブック【実績表.xlsx】(上画像)。 これとは別に、各営業が入力できるブックを12か月分【7月営業.xlsx ~ 6月営業.xlsx】(下画像)。 下画像にあるデータを上画像の表にまとめたいのです。 セルの対応 上画像 下画像 B列23行以下 シート名 C列〃 A列orE列35行~49行 E列〃 B列orF列〃 H列〃 C列〃 I列〃 D列〃 K列〃 G列〃 L列〃 H列〃 これを鈴木さんデータから順にまとめれるようお願いします。 VBAをネット検索し、同ジャンルのQ&Aを複数見つけたのですが、なにぶん素人なものでよくわかりませんでした。 非常に困っていますので、どなたかお助けください。
- 締切済み
- オフィス系ソフト
- エクセルのシート名を、シート1に作成した新旧一覧表に対応させる形で、複数シート一括で変更するには?
エクセルのシート名の変更について教えてください。 シート1のA列に、現在のブックのシート名が、 シート1のB列には、変更したいシート名が 対応するように入力されています。 シート数は50~200程度で、つど変わります。 例 A列 B列 1行目:りんご 赤色 2行目:ばなな 黄色 3行目:メロン 緑色 ・ ・ ・ ・ ・ ・ ※この場合、「りんご」は「赤色」に、「ばなな」は「黄色」に、 「メロン」は「緑色」に、それぞれシート名を変換したい。 今は、手作業でひとつずつシート名を変換しており、 かなりの手間で困っています。 一覧表を作成するまでは手作業でいいのですが、 何とかして、シート名の変更を、この一覧表を参照して できないでしょうか? 過去の質問をいろいろと見たのですが、 該当するものが見つけられず、VBAも初心者のため、 途方にくれています。 ぜひともご教授ください。
- ベストアンサー
- オフィス系ソフト
- 不要なデータを切り取って別のシートに貼りつける
シート1に色々なデータが並べています。A列~J列、5000行くらいです。 J列に「0」「1」「#N/A」の三つの値がバラバラに並べています。 フィルタで昇順にし、「0」「1」「#N/A」と奇麗に並べます。 「0」と「#N/A」の行を切り取ってシート2へ貼り付けます。 そして次にG列に「ダウンロード」以外の文字があった場合も同様に切り取ってシート2に貼り付ける といった作業をしています。作業が大変なので、マクロで実行したいのですが、コードの記述が分からないのです。教えて下さい。 宜しくお願いします。
- 締切済み
- Excel(エクセル)
- エクセルで別ブックを検索するマクロ、VBA
エクセルで以下の処理を行えるマクロを作成したいです。 当方、マクロについてほとんど知識がありません。 恐縮ですが、教えていただけると嬉しいです。 ・主にしたいこと [検索]ブックで一致するコードを探して、 [結果]ブックの対応するコードの行にそれぞれの項目を返したい。 ●ブック1 [検索] シートが12個あります(それぞれ、1、2、3…12というシート名=1~12月分) ↓各シートの内容 A B C D 1 氏名 数値 コード 内容 2 abc 111 SS1234 あいうえお 3 bcd 123 SS3456 かきくけこ ・ ・ ・ といった感じです。 12個のシートの中身はそれぞれ似たようなものですが、 「コード」や「内容」などは少しずつ違います。 ●ブック2 [結果] ↓シートの内容 A B C D 1 氏名 コード 内容 数値 2 SS3456 3 SS1234 ・ ・ ・ といった感じです。 (注)検索用ブックとは列の並びが異なっています。 ここでやりたいことの詳細ですが、 ・[結果]ブックの「コード」(B列)にコードを入力すると、 [検索]ブックで一致するコードを検索し、 A列「氏名」、C列「内容」、D列「数値」に、[検索]シートの内容を 自動的に表示させたい。 (ただし[結果]ブックに入力した「コード」は、[検索]ブックの1~12のうち、 どのシートにあるかわからない) ・入力したコードが見つからない場合は何も表示しない。 ということです。 最初VLOOKUP、MATCH等の関数で表示することを考えましたが、 シートが複数にまたがっているのと、 列の並び方が[検索][結果]ブックで違うのでわかりませんでした。 長くなってしまい申し訳ありませんが、どうかおしえてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでのブック名の取得について。
こんにちは。よろしくお願いします。 自身:a.xls 他:1.xls、2.xls、3.xls 上記全てを開いた状態で、a.xlsのA列に、a.xls以外のブック名を文字列として取得しました。 A 1.xls 2.xls 3.xls この状態で、更に、 追加:11.xls、12.xls、13.xls というブックを開いた場合(1、2、3は開いたまま)に、B列に上記3つのみのブック名を文字列として取得したいと考えています。が、A列に取得したところで行き詰ってます・・・。 ご教授願えると嬉しいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
無事作成したい資料が出来ました。 丁寧な回答をして頂き、有難うございます。