VBA初心者のためのタイトル説明文サンプルファイルの作成方法

このQ&Aのポイント
  • この記事では、VBA初心者向けにタイトル説明文のサンプルファイルを作成する方法を解説します。Excel VBAの基礎を理解していない方でも、簡単にファイルを作成することができます。
  • シート1にキーワードを入力し、シート2にタイトルと説明文のサンプルを5つ出力する方法を説明します。文字数によって、出力するタイトルと説明文を変えることができます。
  • また、タイトルと説明文の候補をシート3に用意しておき、ランダムに出力することも可能です。この記事を読めば、VBA初心者でも簡単にタイトル説明文のサンプルファイルを作成することができます。
回答を見る
  • ベストアンサー

タイトル説明文のサンプル提案ファイルを作りたいのです。

仕事で必要なので、Excel VBAを教えてもらえないでしょうか。 VBAは初心者です。 タイトル説明文のサンプルを出すファイルが作りたいので、シート1の A1に入れたキーワードのタイトルと説明文のサンプルをシート2のA1:B5 に出すような形にしたいのですが、どう書いたらいいでしょうか? 用意したいと思っているのはこのようなシートです。 シート1・・・A1にはキーワードを入れる。 シート2・・・A1:B5までサンプルを表示したい。 シート3・・・タイトルと説明文が列ごとに入っている。 シート2には、候補を5つくらいランダムで出したいと思ってます。 シート3のA列には、「○○ならこちら!」というようなタイトルが 入っており、B列には、「安くておいしい○○が今なら無料です。」と いうような説明文を入れます。 それをシート1のA1のキーワードを入れたタイトル説明文にして、シート 2にサンプルを5つ出したいのです。 ※シート1のA1が「みかん」なら「みかんならこちら!」「安くておい しいミカンが今なら無料です。」となるという感じです。 シート1のA1のキーワードを○○で置換しただけのものをシート2に 出すのは、マクロの登録でできたのですが、文字数によって出すタイ トルと説明文を変えたいので困っています。 A列とB列には2文字のキーワード用のタイトルと説明文しか入ってない、 C列とD列には3文字のタイトルと説明文しか入ってないというようにして おいて、シート1のA1のキーワードの文字数が2文字だったらA列のタイ トルとB列の説明文をシート2のA1:B5にランダムで出したいのです。 どうしたらいいでしょうか? VBAのサイトを見てもわかりませんでした…。 この説明ではわかりにくいかもしれませんが、どう書いたらいいのか 教えて頂けるとありがたいです。 よろしくお願いします。

noname#181401
noname#181401

質問者が選んだベストアンサー

  • ベストアンサー
noname#144013
noname#144013
回答No.3

こんにちは。 FarEyesです。 > ただ、これから4文字、5文字、6文字、7文字、8文字、9文字、10文字と > 増えるのです。 > その場合どうしたらいいでしょうか? でしたら、#1で述べたように、シート3には、A列とB列の2列のみで抽出用の 「タイトル」と「説明文」を登録しておいて、その中の置換対象の文字列(例え ば"○○")を、単純に入力したキーワードと置き換えてシート2に表示するよう にすれば良いと思います。 また、文字数制限などがある場合は、シート2に「タイトルの文字数」及び、 「説明文の文字数」の欄を設けておいて、そこに文字数(マクロで作成した置換 後の文字列の文字数)を表示するようにしておけば、作成されたサンプル候補 の中から該当する文字数以内のサンプルのみ選ぶこともできると思います。 以下は、上記構成のワークシートの例です。 ■シート構成の例 <シート2>         A               B                         C       D     1  タイトル           説明文                       タイトルの  説明文の                                                文字数    文字数   2  『りんご』も~~      お夜食に『りんご』~~                   8       11   3  『りんご』の~~     ご朝食に『りんご』~~                   8       11   4  『りんご』ならこちら!  安くておいしい『りんご』が今なら無料です。      11       21   5  『りんご』で~~     旬な『りんご』~~                      8       9   6  『りんご』が~~     お弁当に『りんご』~~                   8       11   ※1行目は固定の項目名とします。(この行は予め手入力しておくものとします。)   ※A列~D列の2行目以降は、マクロにより自動登録する部分です。 <シート3>         A               B     1  タイトル           説明文      2  『○○』ならこちら!   安くておいしい『○○』が今なら無料です。   3  『○○』を~~       こちらの『○○』~~   4  『○○』は~~      おいしく『○○』~~   5  『○○』に~~      おいしい『○○』~~   6  『○○』で~~      旬な『○○』~~   7  『○○』と~~       新鮮な『○○』~~   8  『○○』の~~      ご朝食に『○○』~~   9  『○○』へ~~      ご夕食に『○○』~~   10  『○○』が~~      お弁当に『○○』~~   11  『○○』も~~       お夜食に『○○』~~   ※こちらは、予めユーザーが登録しておくシートです。   ※"○○"の部分が入力したキーワードに置き換わる部分とします。 以下に、上記の仕様に合わせて、#1のサンプルマクロを改造したバージョンの マクロを記載しています。 <サンプルマクロの補足> 1)シート1のコードモジュールは、特に変更する必要がないので、今回は標準  モジュールのマクロのみ記載しています。 2)このマクロを使用する際は、現在ご使用のワークブックはそのままにしてお  いて新規にワークブックを作成し、そのワークブックのコードモジュールに貼り  付けて、ご利用下さい。  その際は、#1のシート1のコードモジュールもコピー&ペーストして下さい。  また、各ワークシートも、既存のシートからコピー&ペーストしたのち、仕様に  合わせて編集して下さい。 3)グローバルな定数として、下記の定数を追加しています。   '==グローバル定数==   Public Const KEYWORD_LMIN As Integer = 1  'キーワードの最小文字数   Public Const KEYWORD_LMAX As Integer = 10 'キーワードの最大文字数  ※これは、シート1のA1セルに入力するキーワードの文字数制限のために   設けています。  ※サンプル上は仮の値ですので、この設定値は、ご利用の都合に合わせて   変更して下さい。  ※マクロ実行時に、シート1で入力されたキーワードの文字数をチェックして、   それがこの設定文字数の範囲外だった場合は、メッセージを表示するよう   にしています。 4)シート3に登録する「タイトル」と「説明文」の各文字列において、キーワードと  置換する部分には、"○○"("○"×2文字)の文字列を設定して下さい。  ※マクロの処理で、この文字列【コード上は、String(2, "○")の部分】とキー   ワードを置換するようにしています。 5)シート2に追加した「タイトルの文字数」と「説明文の文字数」を表示するため  の処理を追加しています。 ■サンプルマクロ(#1の改造版) 注)インデント等のため、全角スペースを入れています。 <標準モジュール> ========================= Option Explicit '==グローバル定数== Public Const KEYWORD_LMIN As Integer = 1  'キーワードの最小文字数 Public Const KEYWORD_LMAX As Integer = 10 'キーワードの最大文字数 ' '== サンプルタイトル作成 == '※引数 strItem は、「タイトル&説明文」で置き換えるキーワード文字列 Sub MakeSampTitle(ByVal strItem As String)   Dim i As Long      'ループ用変数   Dim imax1 As Long    'ループ用変数(ループ数)   Dim imax2 As Long    'ループ用変数(ループ数)   Dim nPos As Long    '配列の要素位置   Dim nLenItem As Long  '引数文字列(キーワード)の文字数   Dim nTemp As Long    '汎用の数値ワーク   Dim nAryNo() As Long  '整数配列   Dim nArySize As Long  '整数配列の要素数   Dim strTitle As String 'タイトルの文字列   Dim strComment As String '説明文の文字列   Dim strMsg As String  'メッセージ用文字列   '乱数初期化   Randomize   '==引数の文字列(キーワード)の文字数を取得==   nLenItem = Len(strItem)   If nLenItem < KEYWORD_LMIN Or _     nLenItem > KEYWORD_LMAX Then     '文字数が規定範囲外ならメッセージを表示して戻る     strMsg = "キーワードの文字数が規定範囲外です。" + vbLf     strMsg = strMsg & "※規定文字数は " & KEYWORD_LMIN     strMsg = strMsg & "~" & KEYWORD_LMAX & " 文字です。"     MsgBox strMsg, vbExclamation Or vbOKOnly     Exit Sub   End If   '==整数配列の要素数を確定する==   '※シート3のA列の登録データ数を要素数とする   '※1行目が項目名のため、データ最終行の行位置から-1する   nArySize = Sheets(3).Range("A" & Rows.Count).End(xlUp).Row - 1   'シート3に登録文字列がないとき(要素数が1未満)は戻る   If nArySize < 1 Then     Exit Sub   End If   '確定した要素数で整数配列を再確保   ReDim nAryNo(0 To nArySize - 1)   '整数配列に1~nArySizeまでの数値を順番にセット   For i = 1 To nArySize     nAryNo(i - 1) = i   Next i   '==整数配列の要素をランダムに入れ換える==   '※入れ換え回数はnArySizeの値分   For i = 1 To nArySize     nPos = Int(Rnd * nArySize)     nTemp = nAryNo(nPos)     nAryNo(nPos) = nAryNo(i - 1)     nAryNo(i - 1) = nTemp   Next i   '==シート2にシート3より抽出した「タイトル&説明文」をセット==   imax1 = 5    'シート2への最大のデータ登録数(セル範囲の行数)   imax2 = imax1  'シート2への有効なデータ登録数(初期値は最大数と同じ)   If nArySize < imax1 Then     'シート3のデータ登録数が5個未満ならシート2への有効登録数もその数     'とする     imax2 = nArySize   End If   For i = 1 To imax1 '最大のデータ登録数分ループ     If i <= imax2 Then       'データ登録位置が有効登録数以内のとき       '※A列の「タイトル」とB列の「説明文」を取得       '※取得する位置は整数配列の値から参照       strTitle = Sheets(3).Range("A" & nAryNo(i - 1) + 1).Value       strComment = Sheets(3).Range("B" & nAryNo(i - 1) + 1).Value       '「タイトル&説明文」の文字列中の"○"の部分を引数の文字列に置き換える       '※当マクロでは置換対象文字列は"○○"とする【String(2, "○")の部分】       strTitle = Replace(strTitle, String(2, "○"), strItem)       strComment = Replace(strComment, String(2, "○"), strItem)     Else       'データ登録位置が有効登録数を超えたとき       '「タイトル&説明文」を空き文字列とする       strTitle = ""       strComment = ""     End If     '==シート2の該当位置へ置き換え後の「タイトル&説明文」と、     '==それぞれの文字数を格納する     '==※1行目が項目名のため行位置は+1する     Sheets(2).Range("A" & i + 1).Value = strTitle  'タイトルを格納     Sheets(2).Range("B" & i + 1).Value = strComment '説明文を格納     'タイトルの文字数を格納     If strTitle <> "" Then       Sheets(2).Range("C" & i + 1).Value = Len(strTitle)     Else       Sheets(2).Range("C" & i + 1).Value = ""     End If     '説明文の文字数を格納     If strComment <> "" Then       Sheets(2).Range("D" & i + 1).Value = Len(strComment)     Else       Sheets(2).Range("D" & i + 1).Value = ""     End If   Next i End Sub ========================= 添付画像は、上記仕様のExcelシート画面をキャプチャしたものです。 以上です。参考になれば幸いです。

noname#181401
質問者

お礼

FarEyesさん 今更ですが、ありがとうございました!! ようやく2003で試す機会ができました! バリバリ使ってます。 ありがとうございました!!

その他の回答 (2)

noname#144013
noname#144013
回答No.2

こんにちは。 #1です。 当方は、Excel2007を持っていない&使用できる環境もないため、質問者さんと 同じ環境で検証できないため、申し訳ありません。 以下は、推測でのコメントになります。 > Excel2007を使用しているせいか、実行するマクロ名を選択するポップアップ > が出てもこのマクロ名が出ず…。 今回のマクロ(標準モジュール側のマクロ)では、「引数」のある関数を使用して いるため、メニュー操作で、   「ツール」→「マクロ」→「マクロ」    注)Excel2007では操作が違うかもしれません。 と選択して表示される「マクロ一覧」のポップアップ画面には、マクロ名は、 『表示されない』と思われます。 ※これは、正常動作だと思います。マクロ名が表示されなくても問題ありません。  (Excelがそういう仕様になっているようです。たぶん。。。) 以下の操作を行ってみて下さい。 1)シート1のA1セルに、適当に「みかん」とか「りんご」とかの文字列(2文字、  もしくは、3文字)を入れて、[Enter]キーを押してみて下さい。 2)このアクションで、シート1のコードモジュール内の、    Private Sub Worksheet_Change(ByVal Target As Range)  が実行されるはずです。 3)上記2)が実行されれば、標準モジュール内の、    Sub MakeSampTitle(ByVal strItem As String)  も実行されるはずです。 4)シート2に、該当のサンプル(タイトル&説明文)が表示されていれば、  正常動作です。 また、念のため、下記の確認操作も行ってみて下さい。 1)Excelのセキュリティ関連の設定で、マクロが有効な設定になっているか?  ※もし、有効でなかった場合は、有効に設定して下さい。 2)Visual Basic Editor(VBE)を起動して、標準モジュールなどのコード画面を表示  させて(ここで念のため、マウスカーソルをコード画面上に持っていって一度左クリ  ックして下さい)、    メニュー操作: 「デバッグ」→「VBA Projectのコンパイル」    注)Excel2007では、操作が違うかもしれません。  の操作を行ってみて下さい。  ※これで、コードがコンパイルされます。 3)これで何も表示されなければ、コード上の構文エラーなどは、なかったという  ことになります。  ※もしも、コンパイルエラーがあった場合は、エラー箇所が表示されます。   その場合は、エラー箇所が、Excel2007のマクロの構文にあっていない可能性が   ありますので、ヘルプor文献、及び、WEBの情報などを参照して、対応する構文に、   ご自身で修正してみて下さい。 以上です。 あまりお役に立てなくてすみません。(上手くいくとイイですね!)

noname#181401
質問者

お礼

FarEyesさん 普通にA1に入れてエンターでできました! ありがとうございました!! こんな親切な方がいるなんて、感謝感激です…。 オウケイウェイブに聞いて良かったです…。 ただ、これから4文字、5文字、6文字、7文字、8文字、9文字、10文字と 増えるのです。 その場合どうしたらいいでしょうか? ホントに何度もすみません! よろしくお願いします!

noname#144013
noname#144013
回答No.1

こんにちは。 サンプルマクロを作成してみました。 ※あくまで一例です。 ※当方は、Excel2000で試してみました。 ■マクロの処理概要 1)シート1のA1セルの値(文字列)が変更されたら、「タイトル&説明文」作成用の関数  「MakeSampTitle()」を実行する。  ※その際に、関数への引数としてA1セルの文字列を渡す。 2)関数「MakeSampTitle()」では、シート3上に登録された複数の「タイトル&説明文」の  中よりランダムに選んだ(最大5組)、「タイトル&説明文」の文字列中の"○"の部分を、  引数で渡された文字列に置き換えて、それをシート2の該当セルへ格納する。 ■補足  ひとつの案ですが、  シート3に登録する「タイトル&説明文」の文字列の組ですが、今回のサンプルマクロ  では、ご提示の仕様に合わせて、2文字用の組(A列、B列)と、3文字用の組(C列、D列)  とに分けて作成してありますが、  これを分けずに、以下のように、1組のみ(A列、B列のみで、C列、D列は使用しない)  の構成にするやり方も可能かと思います。  <例>   ◎シート3       A列            B列    『○○』ならこちら!    安くておいしい『○○』が今なら無料です。        :             :        :             :   としておいて、   ◎シート1    A1 = みかん   だった場合に、   ◎シート2       A列            B列    『みかん』ならこちら!   安くておいしい『みかん』が今なら無料です。        :             :        :             :   となるような作りにもできるかと思います。   ※シート3の登録文字列を取得して、文字列中の"○○"の部分を、シート1の    A1の文字列に単純に置き換えたものを、シート2の該当セルに格納するよう    にすれば、シート1のA1の「文字数」に関係なく処理できるかと思います。   ※今回のサンプルマクロも、少し変更すれば、上記のような構成にも対応    できるような作りにしてあるつもりです。 ■サンプルマクロ 注)インデントなどのため、全角スペースを入れています。 <補足>  シートへのアクセスは、    シート1 = 1番目のシート ⇒ Sheets(1)    シート2 = 2番目のシート ⇒ Sheets(2)    シート3 = 3番目のシート ⇒ Sheets(3)  としています。 ◎シート1のコードモジュール ========================= Option Explicit '== シート1のセル内容変更時のイベント処理 == Private Sub Worksheet_Change(ByVal Target As Range)   Dim strMsg As String 'メッセージ用文字列   '変更されたセルが"A1"以外なら戻る   If Target.Address <> "$A$1" Then Exit Sub   '該当セルの文字列が空きならメッセージを表示して戻る   If Target.Text = "" Then     strMsg = "A1セルには文字列を入れて下さい。"     MsgBox strMsg, vbExclamation Or vbOKOnly     Exit Sub   End If   'A1セルの文字列からサンプルタイトル作成   Call MakeSampTitle(Target.Text) End Sub ========================= ◎標準モジュール ========================= Option Explicit '== サンプルタイトル作成 == '※引数 strItem は、「タイトル&説明文」で置き換える文字列 Sub MakeSampTitle(ByVal strItem As String)   Dim i As Long      'ループ用変数   Dim imax1 As Long    'ループ用変数(ループ数)   Dim imax2 As Long    'ループ用変数(ループ数)   Dim nPos As Long    '配列の要素位置   Dim nLenItem As Long  '引数文字列の文字数   Dim nTemp As Long    '汎用の数値ワーク   Dim nAryNo() As Long  '整数配列   Dim nArySize As Long  '整数配列の要素数   Dim strTitle As String 'タイトルの文字列   Dim strComment As String '説明文の文字列   Dim strMsg As String  'メッセージ用文字列   '乱数初期化   Randomize   '==引数の文字列の文字数を取得==   nLenItem = Len(strItem)   If nLenItem < 1 Then     '引数の文字列が空き(文字数が1未満)なら戻る     Exit Sub   End If   '==整数配列の要素数を確定する==   nArySize = 0  '要素数を0で初期化   If nLenItem = 2 Then     '引数文字列の文字数が2文字のとき     '※シート3のA列の登録データ数を要素数とする     '※1行目が項目名のため、データ最終行の行位置から-1する     nArySize = Sheets(3).Range("A" & Rows.Count).End(xlUp).Row - 1   ElseIf nLenItem = 3 Then     '引数文字列の文字数が3文字のとき     '※シート3のC列の登録データ数を要素数とする     '※1行目が項目名のため、データ最終行の行位置から-1する     nArySize = Sheets(3).Range("C" & Rows.Count).End(xlUp).Row - 1   Else     '引数文字列の文字数が2文字でも3文字でもないときは戻る     Exit Sub   End If   'シート3に登録文字列がないとき(要素数が1未満)は戻る   If nArySize < 1 Then     Exit Sub   End If   '確定した要素数で整数配列を再確保   ReDim nAryNo(0 To nArySize - 1)   '整数配列に1~nArySizeまでの数値を順番にセット   For i = 1 To nArySize     nAryNo(i - 1) = i   Next i   '==整数配列の要素をランダムに入れ換える==   '※入れ換え回数はnArySizeの値分   For i = 1 To nArySize     nPos = Int(Rnd * nArySize)     nTemp = nAryNo(nPos)     nAryNo(nPos) = nAryNo(i - 1)     nAryNo(i - 1) = nTemp   Next i   '==シート2にシート3より抽出した「タイトル&説明文」をセット==   imax1 = 5    'シート2への最大のデータ登録数(セル範囲の行数)   imax2 = imax1  'シート2への有効なデータ登録数(初期値は最大数と同じ)   If nArySize < imax1 Then     'シート3のデータ登録数が5個未満ならシート2への有効登録数もその数     'とする     imax2 = nArySize   End If   For i = 1 To imax1 '最大のデータ登録数分ループ     If i <= imax2 Then       'データ登録位置が有効登録数以内のとき       If nLenItem = 2 Then         '引数文字列の文字数が2文字のとき         '※A列の「タイトル」とB列の「説明文」を取得         '※取得する位置は整数配列の値から参照         strTitle = Sheets(3).Range("A" & nAryNo(i - 1) + 1).Value         strComment = Sheets(3).Range("B" & nAryNo(i - 1) + 1).Value       Else         '引数文字列の文字数が3文字のとき         '※C列の「タイトル」とD列の「説明文」を取得         '※取得する位置は整数配列の値から参照         strTitle = Sheets(3).Range("C" & nAryNo(i - 1) + 1).Value         strComment = Sheets(3).Range("D" & nAryNo(i - 1) + 1).Value       End If       '「タイトル&説明文」の文字列中の"○"の部分を引数の文字列に置き換える       strTitle = Replace(strTitle, String(nLenItem, "○"), strItem)       strComment = Replace(strComment, String(nLenItem, "○"), strItem)     Else       'データ登録位置が有効登録数を超えたとき       '「タイトル&説明文」を空き文字列とする       strTitle = ""       strComment = ""     End If     'シート2の該当位置へ置き換え後の「タイトル&説明文」をセット     Sheets(2).Range("A" & i).Value = strTitle     Sheets(2).Range("B" & i).Value = strComment   Next i End Sub ========================= 参考までに、上記サンプル実行後のExcelシート画面のキャプチャ画像を添付 しています。 ※ご使用のブラウザ上のFlash機能が対応していれば、画像の拡大が可能か  と思います。(画像上で右クリックでメニューがでると思います。) 以上です。 ご要望のものとは違っていた場合はすみません。 参考になれば幸いです。

noname#181401
質問者

お礼

FarEyesさん ありがとうございます! 上のコードをシート1に、下のコードを標準モジュールに貼り付けてみま した! Excel2007を使用しているせいか、実行するマクロ名を選択するポップアップ が出てもこのマクロ名が出ず…。 悪戦苦闘しています。 どうやったら出せるのか調べてみます。 シート3のデータはA列とB列だけにしてしまってもよいのですが、出したい タイトルと説明文は文字数制限があるので、2文字はA列とB列、3文字は C列とD列に分けました…。 でも、統合できるならそっちの方がいいですね。

関連するQ&A

  • オンマウスで出た説明文の色を変えたい

    オンマウスで出た説明文の文字色を変える事は可能なのでしょうか? <a href="サンプル.html"title="オンマウスで説明">タイトル</a> 今こんな感じです。 どこに何をいれればいいのか教えてください。

    • ベストアンサー
    • HTML
  • 複数のExcelファイルから値を引っ張ってくる

    いろいろ調べたのですが、いまいちよくわからなかったので教えてください。よろしくお願いします。 複数のエクセルファイルから値を引っ張ってきて、計算をしたいのですが、そのようなことは可能でしょうか? 例えば、 Sample1.xlsxのsheet1のC列にはA列とB列を足すという式が入っている。 Sample1.xlsxのsheet1のA列には、Sample2.xlsxのA列の値を、 Sample1.xlsxのsheet1のB列には、Sample3.xlsxのA列の値を、 参照してきて入れたいということです。 Sample2や3を変更したときには、Sample1の値にも反映してほしいです。 可能ならば、参照するファイルやシートを自由に決定できると良いです。 説明が下手で申し訳ありませんが、よろしくお願いいたします。 なお、マクロ等はまだ初心者です。

  • どのようなVBAを書けばよいでしょうか

    以下のような表があります。 (sheet1) A列    B列    続く… タイトル1 タイトル2  …     (←一行目にタイトル) 13     5          (←二行目から数字がランダムに)  18    14 44    33 36    87 22    11 14    14 27    24 21    39 32    62 35     5 44     4 12     3 (以下続く。各列が何行で終わるかもランダム) 「各列の数列の平均と分散」「列全体を含めての平均と分散」 を、新たなシートに書き出したいのです。 上の例からすると、 (sheet2) A列    B列   C列       平均   分散    (←一列目) タイトル1  ??   ??    (←二列目から結果を) タイトル2  ??   ??  … 全体     ??   ?? のような感じです。 データの量が多いので、手作業で関数を使っていては、莫大な時間を要してしまいます。 どのようなVBAを書けばいいのでしょうか。 分かる方、よろしくお願いします。

  • エクセルの関数について

    エクセルのシート1で1行目には見出しがあります。 A1には「店名」の文字 A2には、A店 A3にはC店 A4にはB店 A5にはA店とA2~A200には、ランダムにA店~C店の文字がランダムに入っています。 B2には、「個数」の見出し文字。B2には 3 B3には 201  B4には 42 などとB2~B200まで色々な数字が入っています。 ちなみに B列には 0~300までのランダムな数字。 これをシート2に、B列の数の区分けをしたいのです B列の区分け 0~30 31~50  50~300  よって、シート2のA1には「店名」という文字。B2には 0~30  C2には 31~50  D2には50~300という文字が入っています・ シート2のA2には、A店 シート2のA3には B店 シート2の A4には C店 という文字が入っています。 シート2のB2にはシート1のA店のB列にある B2~B200に入ってる文字の 0~200までに入ってる数字 0~30の セルの個数を出したいのですが どうやってシート2に関数を入れたらいいのですか?教えてください

  • エクセルで商品を振り分ける方法ありますか?

    すみません、エクセル関数を使ってシート別に商品を一括して振り分けることはできますでしょうか? 内容としては、以下のように商品名が単語になっていない場合に、 桃やみかんといったキーワードを抽出して振り分ける形になります。 また、VBAでは知識がありませんので、後々いろいろな形に変更できる 関数で行いたいのですが、ご教示頂けませんでしょうか? シート1:商品一覧(商品データ)  A列(商品名)      B列(商品コード)    C列(金額)  新鮮な桃20個セット    14568        ¥3,450  美味しいみかん1ケース  23456        ¥2,980  山形直送!さくらんぼ   87666        ¥4,500    ・    ・    ・ シート2:桃(”桃”が入っている場合に振り分けられるようにしたいです。)  A列(商品名)      B列(商品コード)    C列(金額)  新鮮な桃20個セット    14568        ¥3,450    ・    ・    ・ シート3:みかん(”みかん”が入っている場合に振り分けられるようにしたいです。)  A列(商品名)      B列(商品コード)    C列(金額)  美味しいみかん1ケース  23456        ¥2,980    ・    ・    ・ シート4:さくらんぼ・・・・・ といったようにしたいのですが、ご教示いただけませでしょうか? シートは予め必要分だけ作っておきます。 何卒宜しくお願い申し上げます。

  • excel vba 検索の方法について

    excel vba 検索の方法について sheet1とsheet2があり sheet1のA列に10列(全て8桁の数字)文字が並んでいます。 sheet2のA列には1000列(全て8桁の数字)文字が並んでいます。 sheet1のA列とsheet2のA列で同じ文字がある場合 sheet2のA列の同じ文字の隣のsheet2のB列に◎がつくような vbaが書きたいです。 A列の文字は消したり、文字を変えたりします。 コマンドボタンに書いて、ボタンを押せば B列に◎がつくようにしたいです。 ご教授お願いします。

  • Excel 複数列からの検索

    Excel 複数列からの検索 シート1のB列に入力された文字と同じものを、シート2のA~B列より検索し、一致する文字があれば、シート1A列に「○」を表示させたいと思っています。(ない場合は空欄で対応したい) <シート1>   A  B 1 ○ みかん 2    りんご 3 ○ バナナ <シート2>   A    B 1 みかん メロン 2 かき   パイナップル 3 なし  バナナ VLOOKUPを駆使してで頑張ったものの複数列が壁で無理でした。 何かいい解決法はありますでしょうか。 ちなみに。シート2のA列・B列は文字ではなく関数で得られた結果です。 参考→「=IF(ISERROR('シート名'!$B26:$B26),"",'シート名'!$B26:$B26)」 よろしくお願いいたします。

  • 下記ケースのExcelの計算式を教えてください

    Excelにシート1と2があります シート1 A列 夕べ 眠れずに 失望と 戦った 1,000 2/28 君と僕は いつでも ここで合っている 2,300 3/2 また 月がのぼる 今日が 終わる 1,500 3/3 負けるな 明日に 背を 向けたくない 350 3/5 目を綴じれば 思い出す 7,000 3/10 シート2 部門コード列A キーワード列B aaa 月 bbb 夢 ccc 僕 ddd 失望 eee 昨日 シート1はA列のみ。 A列の各セルには一つの文字列ではなく、スペースに区切られたいくつもの文字列や数値や日付けなどが複数表示されています。 A列の各行のひとつのセルの中に、シート2のキーワード列Bのいずれかの文字列が含まれる場合に、シート2のそのキーワード文字列と同じ行の部門コード列Aの文字列をシート1のB列に返したい どういう計算式にすればよいかおしえてください

  • Excelでこういうことはできますか?

    Excel2000を使っていますが 例えば、シート1に A列    B列に 1月25日  りんご 1月10日  みかん 1月20日  みかん 1月25日  ぶどう 1月18日  りんご 1月20日  ぶどう  … というようにランダムにそれぞれ入力して シート2に「りんご」 シート3に「みかん」 しーと4に「ぶどう」 だけを抽出して日付順にまとめることは可能ですか? 可能であればその際に、どのような関数をどのように組み込めばできるのでしょうか? 初心者でもそれは可能でしょうか? 説明が下手で申し訳ございませんが、わかる範囲でのお答えをお願いいたします。

  • バッチファイルについての質問です

    バッチファイルの質問です。宜しくお願いします。 バッチファイルでテキストファイルの中から指定した文字列が入っている行をとり、指定した文字列を除いた文字列が欲しいのですが、どのようなコマンドを使用すればできるでしょうか? ----------------------- AAAランダム文字列1 BBBランダム文字列2 CCCランダム文字列3 DDDランダム文字列4 EEEランダム文字列5 ----------------------- 上記のようにテキストファイルに書かれていたとして、”ランダム文字列3”という文字だけを取得したいのです。 つたない説明文で申し訳ございませんが宜しくお願いします。