• ベストアンサー

こういうマクロの作成は可能でしょうか?

こういうマクロの作成は可能でしょうか? 添付画像を参照いただきたいのですが、 I列の商品が一致するときに、H列に産地(G列)の合体版を 自動で入れるマクロを考えております。 まとめて範囲選択して、マクロ実行で完成するのを作りたいと思っています。 ※できれば例のように○○県産の「県産」は最後のみ入れる形が希望です。 同じような作業が、毎日10箇所くらいある為、マクロを作りたいんですが 知識不足で自分ではできません。 どなたかお力を貸していただけませんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

以下の工夫は、最後が、フィリピン産となった場合の「県産」と追加させないようになっています。つまり、最後の文字をそのまま付け加えるようになっています。また、追加分は、追加分だけを加えるようになっていますから、改めて作るようにするためには、 For i = j To m - 1 を、そのまま、For i = 2 To m - 1 にしてください。 但し、現状のマクロでは、岐阜/三重/三重県産 となるような、二重登録防止は付けていません。それと、図の色分けが気になりますね。 '//標準モジュール・該当シートモジュール Sub TestMacro1()  Dim i As Long, d As Long, e As Long  Dim j As Long, m As Long, n As Long  m = Cells(Rows.Count, 7).End(xlUp).Row '最終行  n = Cells(Rows.Count, 8).End(xlUp).Row '出来上がり行  If n > 2 Then '追加の為の処理   j = n  Else   j = 2 '初期行  End If  Application.ScreenUpdating = False  For i = j To m - 1   If Cells(i, 9).Value Like Cells(i + 1, 9).Value And d = 0 Then    d = i   ElseIf Not (Cells(i, 9).Value Like Cells(i + 1, 9).Value) And d > 0 Then    e = i    Cells(d, 8).Value = CombineData(d, e, 7)    d = 0   End If  Next  Application.ScreenUpdating = True End Sub Private Function CombineData(ByVal d As Long, ByVal e As Long, ByVal k As Long)  Dim buf As String  Dim dat As String  Dim rng As Range  Dim i As Long  With ActiveSheet   Set rng = .Range(.Cells(d, k), .Cells(e, k))  End With  For i = 1 To rng.Rows.Count   buf = rng(i).Value   If rng.Rows.Count <> i Then    buf = Replace(buf, "県", "")    buf = Replace(buf, "産", "")   End If   dat = dat & "/" & buf   buf = ""  Next  CombineData = Mid(dat, 2) End Function

excel110
質問者

お礼

Wendy02さま 驚きの一言で、完璧なマクロありがとうございました。 自動でマクロ作るくらいの知識しかないので、これから少しずつ勉強したいと思います。 いろいろ考えて頂き、本当にありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

プログラムを造れというのでなく、自分でマクロの記録から始めて、やってみないと。回答者は下請けではない。 元データの在り様(行・列・シート)の質問文での説明が大切なのだが質問には載せてない。 推測では 商品名ー産地名 のデータ(行)があると思われる。 これを別作業シートにコピーし(元は残すため。元のデータの行に連番を振っても良い) (1)商品別にソートする。その操作をしてマクロの記録を採れる。 同じ商品は行的に近隣に集る。 (2)ソート後のシートで  商品が同じ間は産地を調べ(産地も同じなら2つ目以降は読み飛ばし)、産地名を/で区切って連ねていく。隣のセルに移していくほうが易しいとおもうが。 ーーー これらにはデータ処理のコントロール(続き具合を扱うロジック、手順)の扱い方のコツの会得が必要で、初めての人には難しい。

excel110
質問者

お礼

いろいろ考えて頂き、ありがとうございました。 最初は関数を使って、何とかしようと思ったのですが複雑になりすぎるので 何とかマクロで出きればなと思い質問しました。 マクロ記録はある程度できますが、これから少しずつ勉強していきます。

関連するQ&A

  • こういうマクロの作成は可能でしょうか?

    こういうマクロの作成は可能でしょうか? 添付画像を参照いただきたいのですが、 黄色部分を選択して、マクロボタン押すと【D2】に 選択したセルの結合がでる。 同じく緑部分を選択して、マクロボタン押すと【D4】に結合したものがでる。 上記のような作業が、100箇所くらい必要な為、マクロを作りたいんですが 知識不足で自分ではできません。 どなたかお力を貸していただけませんでしょうか? よろしくお願いします。

  • マクロを作成することになりました!

    今までマクロと言えば、集計の時にボタンを押すことしかしたことがなかったのですが、急きょ、マクロを設計?することになりました。上級者用ではなく、長文になってもいいので初心者用が作成した場合の内容を教えてください。 添付した資料の「□「全体」sheet1」の1人につき1か月分のデータをあります。それを「□「完成版」sheet2」のようにしたいのですが、上司に参考資料として「□マクロ」の内容を教えてもらいましたが、さっぱりわかりません。 どこの部分をどのように使用すればよいのか教えてください。 「完成版」はシート2にできるようにしたいです。

  • マクロを使い選択範囲を次々と変えて並べ替えたい

    マクロ作成は 範囲選択 A4~G12 マクロ記録開始 並べ替え E列 降順 マクロ記録終了 でマクロを作成し 次に範囲選択 A14~G22でこのマクロを実行すると範囲選択が前と同じA4~G12が並べ替えられてしまいます。 マクロの中を見ると範囲選択 A4~G12が書かれてしまっています。 次のように、選択範囲を次々と変えて並べ替えるマクロを作りたいのですがお教え願います。 1. 範囲選択 A4~G12を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 2. 範囲選択 A14~G22を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 3. 範囲選択 A28~G32を選択 マクロ実行で選択範囲をE列の値で降順並べ替える

  • Excel マクロ データ集計

    Excel マクロ データ集計 Sheet1にある情報を集計して、集計結果をSheet2に貼り付けるマクロを考えています。 「Sheet1」のA列、B列、C列が合致した場合に同じ商品とみなします。 C列で「新鮮」とついている場合には、商品名で一致させて、Sheet2の 同じ商品名のところに記載します。 「Sheet2」に貼り付ける際、「Sheet1」のA列は不要です。 どのようなマクロを作成すればよろしいでしょうか。 画像を添付します。 「Sheet2」は完成形です。

  • 【マクロ】表に格子をするマクロ

    添付した画像の表があります。 この表に格子をつけて、表らしい見た目にするマクロを教えていただきたいです。 また、このシートは14列で表が終わっていますが、 他のシートは20列だったりとバラバラです。 すべての表で格子をつけるマクロを実行したいと思っているので、 他のシートで実行してもエラーの起きないマクロを教えていただけたらと思います。 分かりにくい説明で大変恐縮ですが、回答のほうよろしくお願いいたします。

  • 選択範囲のセルを1行ずつ結合するマクロ

    こんにちは、いつも参考にさせていただいております。 セルを範囲選択し、 1行ごとに結合させる方法はないでしょうか。 手作業ではなくマクロでの方法を探しています。 イメージとしては (1)範囲選択する (2)マクロ実行する  →列の範囲を1行ずつ、選択している範囲だけ各行を結合 図も添付いたしますので、どうかアドバイス・ヒント頂けないでしょうか。 よろしくお願いいたします。

  • マクロを使って抽出する

    マクロを使った抽出について教えてください。 A列  B列  C列  D列 番号  区分  氏名  年齢  *区分はA~Pが入ります。  *リスト範囲:A1:D200 セル[F1]に区分(A~P)を入力して実行すると35歳以上を抽出する。 オートフィルタの設定を使わずマクロで実行したいのですが、どのようなマクロを書けばよいのかわかりません。 マクロ初心者で申し訳ありませんが、よろしくご教授ください。

  • Excelマクロでセルの比較

    Excelマクロでセルの比較 まだマクロ初心者なので、詳しいことがわからなくて困っております。 例)●前提として何行目まであるかは変化します     (A列)(B列) (1行目) 35  35 (2行目) 26  26 (3行目) 13  13 (n行目) 12  12 ※n=最終行 【やりたいこと】 このようにシートに入力されていたとして、 「A1=B1?」⇒「A2=B2?」⇒「A3=B3?」⇒「An=Bn?」と比較を進めていき不一致の有無を出す。 もし不一致がなければ、そのまま通過しその次のマクロを実行していく。 不一致があった場合には、不一致の行を別ファイルに出力してファイル保存し、ファイルを閉じる。 マクロを実行している元のファイルは、保存せずにファイルを閉じる) 行の長さが変化するため、その変化にも対応した処理を実行したいと思っております。 本やサイトで調べてみたのですが、基礎知識がないためうまく処理をさせるマクロを作ることが出来ませんでした。 このようなマクロが可能なのかもわかりませんが、出来ましたらこのマクロを教えていただけますでしょうか。 宜しくお願いいたします。

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • エクセルマクロでファイル名やシート名変更できない

    エクセルは初心者なのでマクロを自動記録して作成しています。 少しづつ動作を小分けにして記録して、まとめてボタンで連続実行させるようにしました。 (1)作成途中で失敗したら最初からの作業になると思い、 ある程度進んだら何度かファイルのコピーを作成して進めていました。 ある程度完成した時点でファイル名が「○○○4~コピー~」の様な名前だったので、正式に名前を決めて変更したらマクロの実行が出来なくなりました。(元の名前に戻すと実行可能) (2)またシートも複数のシートに跨って参照するようなマクロです。 シート名を分かりやすい名前に変更したらこの場合もマクロ実行できなくなりました。 (3)コピーしたファイルもマクロ実行できないものがあります。 コピーしたファイルはマクロ実行できないのでしょうか? (4)ファイル作成途中で何かの変更が生じて列や行の挿入を行った場合、 特定のセルを参照して計算するマクロは実行できなくなるのでしょうか? その場合、簡単に修正する方法はありますか? 初心者にも分かるような回答をよろしくお願いいたします。

専門家に質問してみよう