• ベストアンサー

マクロについて

初めて投稿します。 最近、マクロを初めて全くの初心者です。 一応わからない事はネットで検索してたりしていますが 自分が求めているようなプログラミングは可能かどうか皆にお尋ねします。 リストにこういったものが記載されています。 地産    品物  数量  鹿児島   鶏v    1 東京     鶏v2     3 北海道   鶏b    7 これを下の図にマクロで自動的に作成させるようにしたいです。 地産    品物  種類  数量  鹿児島   鶏    v    1 東京     鶏   v2     3 北海道   鶏    b    7 種類によってv、v2、bとあるように文字数が違ってきてそれを抽出する為に 条件を用いてプログラミングすることは可能でしょうか? 関数などで抽出は一応出来ますが、この他にも作業を含んでおり 1から最後までマクロで完了させたいと思っております。 急ぎではありませんので、宜しくお願い致します。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

これでよい? リストがSheet1にあるとして Sheet2へ作成します Sub test() Dim i As Long Dim WS1 As Worksheet Set WS1 = Worksheets("sheet1") For i = 2 To WS1.Cells(Rows.Count, 1).End(xlUp).Row With Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = WS1.Cells(i, 1).Value .Offset(, 1).Value = Left(WS1.Cells(i, 2).Value, 1) .Offset(, 2).Value = Right(WS1.Cells(i, 2).Value, Len(WS1.Cells(i, 2).Value) - 1) .Offset(, 3).Value = WS1.Cells(i, 3).Value End With Next End Sub

DEC2010
質問者

お礼

上の回答との組み合わせで自分の思っていたものが出来そうです。 参考にさせていただきたいと思います。 回答有難うございました。

DEC2010
質問者

補足

やってみましたらうまくいきました。 品質の文字数が多くても問題ありませんでした。 どうして分離が出来るのか詳しく教えて頂けませんでしょうか?

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

どんな条件か解りませんが、分離に関して作成してみました。 Sub test() Dim i As Integer Dim x As Integer Dim sStr As String Dim sStr1 As String Dim sStr2 As String Dim Ary As Variant Ary = Array("鶏", "牛", "河童") 'MsgBox Ary(0) For i = 1 To 5 sStr = Cells(i, 1) x = 0 Do While x <= UBound(Ary) sStr1 = Ary(x) If InStr(sStr, sStr1) = 1 Then Exit Do End If x = x + 1 Loop sStr2 = Right(sStr, Len(sStr) - Len(sStr1)) Cells(i, 2) = sStr1 Cells(i, 3) = sStr2 Next End Sub

DEC2010
質問者

お礼

返信が遅くなり申し訳ありませんでした。 回答有難うございます。 参考にさせていただきたいと思います。

DEC2010
質問者

補足

やってみましたのですが、何故か品物の一覧が河童で埋め尽くされてしまいました。 私の方法が間違ってましたでしょうか?

関連するQ&A

  • リストから抽出

    前回こちらで質問させていただいたのですが、説明不足だったので再度質問として補足を加えました。回答をいただいた方には申し訳ありませんが再度確認をお願い出来ませんでしょうか? リストには番号、産地、品物、数量といった感じで横に並んでいます。 番号    産地    品物      数量  0001    北海道   豚桃      3 0002    大阪     サンマ黒    5 0003    鹿児島    豚 TB黒F   2 0004    長崎     牛黒F      9 0005    大分     牛無色      1 問題になるのが品物の項目で様々な色や品目があり、 同じ豚でもタイプが違って豚、豚 TBというようにスペースが空いてたりします。 色も同様に黒、黒Fといった感じで他にも無色、例外ものがあったります。 これらを考慮しつつ下記の図のように抽出させてその後の作業に続くマクロを作りたいと思っています。 番号    産地    品物      色      数量  0001    北海道   豚       桃       3 0002    大阪     サンマ     黒       5 0003    鹿児島    豚 TB     黒F       2 0004    長崎      牛       黒F       9 0005    大分      牛       無色      1 条件に豚、豚 TB、サンマ、牛を指定してその後に続く文字を色に持ってこさせるか もしくは他の方法で効率のいいやり方があればマクロで教えて頂けませんでしょうか? 急ぎではありませんので宜しくお願い致します。

  • 空白を埋めるマクロについて

    マクロで教えて下さい! A B C D    ...... 数量 名前 種類 購入者  .... 1  2  あ  A 2    く 3 5 DD 4          まま 5    さ 6          ぱぱ と右は何十項目・下は何千行と項目が続くデータがあります。 この空白に上の文字をコピーし埋めて行くマクロを作成するにはどうしたら良いでしょうか? ただし以下の条件があります。 (1)D列の様に1行目が空白のセルは4行目の様に文字が入っている所までは空白のまま (2)A列はそのファイルにより何行目までデータが入っているかは不明 A B C D     数量 名前 種類 購入者   1  2  あ  A       2  2  く A 3 5 く DD 4  5  く DD   まま 5  5  さ DD まま 6  5  さ DD   ぱぱ 宜しくお願い致します。

  • マクロについて

    エクセルのマクロについて質問です。 シート1にデータが入っており A列に入っているデータを営業所ごとにまとめて抽出し 雛形シートをコーピーしてデータを貼り付け、シート名をA列の営業所名にしたいのですが 可能でしょうか? 例えば  A列       B列  C列   東京営業所  30個  500円  大阪営業所  10個  200円  東京営業所  5個   100円 ↓↓↓  A列       B列  C列   東京営業所  30個  500円  東京営業所  5個   100円   シート名 東京営業所 ---------------------------------------  A列       B列  C列   大阪営業所  10個  200円   シート名 大阪営業所 毎回手作業で、どなたか教えていただけますと助かります。

  • 集計表を作成するマクロについて

    「1日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    東京   大阪   L     10 3 2    北海道  東京   M      5 4 3    東京   北海道  L     17  5 4    福岡   東京   N      8 「2日」のシート   A    B    C    D     E 1 車両番号 出発場所 到着場所 商品コード 数量 2 1    大阪   東京   K      8 3 2    東京   愛知   L      7 4 3    福岡   大阪   N     17  5 4    北海道  千葉   N     13 上記のように「車両番号」「出発場所」「到着場所」「商品コード」「数量」の情報が入ったシートが日別に1枚ずつあり、月間で28~31枚が1つのファイルに入っています。 このファイルで、新しいシートを追加して、日別の車両情報の一覧を作成したいのですが、どのようにしたらよいのか教えていただけませんか? 以下の条件で作成したいと思います。 1.「A1」から「E1」を新しいシートの「A1」から「E1」に貼り付ける。 2.シートの「車両番号」に数字が入っている行をそのままコピーして、新しいシートに貼り付けていく。その際に、コピー元のシート番号が入ればありがたい。(無くても可) 3.日別の車両情報をスペースは開けずに下に続けて貼り付けていく。 4.月ごとに日数が異なるので、車両情報が投入されているシートのみを貼り付ける対象としたい。 以上です。 次のように表示されるようになると嬉しいです。   A    B    C    D     E  F 1 車両番号 出発場所 到着場所 商品コード 数量 参照シート名 2 1    東京   大阪   L     10 1日 3 2    北海道  東京   M      5 1日 4 3    東京   北海道  L     17 1日 5 4    福岡   東京   N      8 1日 6 1    大阪   東京   K      8 2日 7 2    東京   愛知   L      7 2日 8 3    福岡   大阪   N     17 2日 9 4    北海道  千葉   N     13 2日 これが出来れば、手で「コピー・貼り付け」をしていくよりも入力ミスが少なくなりそうです。 よろしくお願いします。

  • EXCELでマクロを使った検索・一覧抽出の方法を教えてください。

    社内文章の表を作成しているのですが、あまりにもデータ量が多く、関数での算出が難しくなってきたので、 マクロを導入したく思っているのですが、検索しても当てはまるものが無く、困っています。。。  | A  | B  | C  | D  | E  | F  | G  | H  | I  | J  | K  | 1|名称1|名称2|数量 |種類1|数量1|種類2|数量2|種類3|数量3|条件1|条件2|・・・ 2|    |    |    |    |    |    |    |    |    | (1) | (1) |・・・ 3|*****|*****|*****|***** |***** |*****|*****|*****|*****| (2)  | (2)  |・・・ 上記のような表があり、今までは関数にて、(1)のセルに検索条件を入力し、(2)のセルに「=SUMIF(D2:H2,A2(1),E2:I3)という式を入れ計算していました。 種類1~種類3に入力されている情報と(1)が合致したら、数量1~数量3を合計した値を(2)へ記入したいのです。 この検索条件が60項目あり、行数も2000行を超えているのですが、、全てのセルに関数を入れている状態です。

  • EXCELマクロVBAについて

    Excel2007、XPを使用しています。 AからE列に下記のような情報が入力されています。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/10 11111 / 田中 / 東京都 / 00000000000 / 2012/08/09 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/11 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 A列のIDでくくったとして、 E列の注文日が最大のみの行を表示させたいです。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 このようなことはマクロで可能なのでしょうか? 恐れ入りますがご教授お願い致します。

  • カテゴリーから日付の小さい物を抽出させたいのですが・・・

    A列  B列 C列 D列 E列 F列 G列・・・ 日付 CD 数量 品名 出庫 入庫 項目 11/1 10 2個 *** 11/2 10/30 神奈川 11/2 11 2個 *** 11/3 11/1 愛知 11/5 20 4個 *** 11/7 11/1 静岡 11/8 30 6個 *** 11/9 11/2 鹿児島 項目  数量 日付  入庫 鹿児島 2個  11/8 11/2 神奈川 2個 11/1 10/30 県名から”数量”・”日付”・”入庫”だけ抽出させたいのですが、どの様な関数を使えばいいのでしょう? 手入力ですればいいのでしょうが、数も多く時間をかけず作業を早く終わらせたいので、いい知恵があれば教えてください。

  • エクセル2003マクロ

    特定のフォルダに同じサンプルNoのファイルがA~Dまで4種類ずつあり、これらから必要なデータを抽出し、同一Noに対して一つの集計ファイルを作成するマクロを作りたいと思っています。 ユーザーフォームで1台ずつサンプルNoを入力すれば、抽出→集計まで処理できるコードはできたのですが、サンプルNoを指定せずにコマンドボタン1発でフォルダ内のサンプル全てを同様に処理できる方法が分かりません。色々なサイトを覘きましたが、妥当な例がなく困っています。 ファイル名はそれぞれ、 A-1.xls、B-1.xls、C-1.xls、D-1.xls、A-2.xls、B-2.xls・・・という規則でついていて、全て同じフォルダに保存されています。 どなたか良い知恵をお貸し下さい。

  • マクロでオートフィルターの抽出が出来ない

    下記のデーターをマクロで作成しましたが、2010/03/01は抽出するが、2010/03/02以降は デバッグが発生して上手くいきません。 どの様にすれば解決できるのか、ご教授お願いします。 現状) AファイルのA列のオートフィルタオプションで、抽出条件の指定にBファイルの C6をコピーして、「Ctrl」+「V」で貼り付け抽出すると2010/03/01の24時間分の データーが抽出されます。2010/03/02を抽出するとデバッグが発生する。 データーの詳細) Aファイルに「元データー Sheet」があり、A6~A44647に、 1ヶ月分の日付が記載されてます。 (B6~B44647には、24時間を1分間隔でのデーターがあります) A列の日付は、2010/03/01~2010/03/31のデーターがあり、 「セルの書式設定」を確認すると、「標準」設定で表記されてます。 オートフィルタによりA列の、各1日分のデーターを抽出させます。 Bファイルの「作成日指定 Sheet」のB3に2010/3/1を入力すると C6には「=$B$3」で「2010/03/01」と表示する様に「セルの書式設定」 「ユーザー定義」で「yyyy/mm/dd」を選択してます。(C36まで設定) 以下C7に「=$B$3+1」で、C8には「=$B$3+2」で、C36までで「2010/03/31」 と表示させてます。

  • 条件付き書式をマクロで記入する方法?

    よろしくお願いいたします。 エクセル2010を使用しておりますが、 1行目の列ごと(A列、B列・・・・)に各種類の品物が入力されていて 2行目から、列ごとにその品物別の番号が多数あるのですが、 指定した番号が一致したらセルの文字を”太字”で”赤文字”、”黄色”で塗りつぶすと いった事がしたいのです。 条件付き書式でやればと思ったのですが、新しいルールといった作業が かなり時間がかかります。 そこで作成してもらいたい事は マクロで A列の番号 B列の番号 C列の番号 条件は太字、赤文字、黄色に塗りつぶす というような記述で列ごとに番号だけ変えれば上記のルールを実行できるといった ことをしたいのですが、可能でしょうか? できればマクロはほとんどわからないので、そのまま記述してもらえると助かります。 よろしくお願いいたします。

専門家に質問してみよう