
Excel VBA で、2行1単位のデーター行があり、尚且つ特定条件の
データーを切り取り番号順に切り取った行を挿入する
ことについて、ご教授願います。
初心者で、どのようにしたらよいのか難しすぎてわからりません
詳細
・A列1行目は、表題が入る
・A列2行目は、品番という名称が入る
・A列3行目からデーターが入ります。
データーは2行で1つのデーターとしてします(2行1単位)。
データーは1000くらいあり増減します。
そして、空欄行もあります。
AY列まで使用しています。
切り取り挿入条件は、2行1単位の上番号に小文字のsがついてなくて、
下行目に(指示部品)と入力してあるデーターです。
上番号に小文字のsがついてなくて、
下行目に(指示部品)と入力してあるデーターの上番号で
判断します。下の行は無視です。
切り取りとったデーター(2行1単位)を番号順に挿入する
下記で説明すると
3行と4行、5と6、7と8、9と10、11と12・・・・
と2行で1つのデーター(2行1単位)となります。
切り取り対象は、19行と20行、21行と22行
となり、それぞれの上行番号(19行、21行)で判断します。
19行と20行を切り取り、12行下へ挿入となります。
21行と22行を切り取り、6行下へ挿入となります。
A列 B C D E F AY
1
2 品番
3 S1231119999A
4 S113561110
5 3123389101
6 S113561120
7 S123151930A
8 S123151930
9 S123111980A
10 S123111940
11 332571219A
12
13 S123111980As
14 (指示部品)
15 S1231119999As
16 (指示部品)
17
18
19 332571251A
20 (指示部品)
21 3123389102
22 (指示部品)
23
24
⇓
VBA後
A列 B C D E F AY
1
2 品番
3 S1231119999A
4 S113561110
5 3123389101
6 S113561120
7 3123389102
8 (指示部品)
9 S123151930A
10 S123151930
11 S123111980A
12 S123111940
13 332571219A
14
19 332571251A
20 (指示部品)
15 S123111980As
16 (指示部品)
17 S1231119999As
18 (指示部品)
19
20
21
22
23
24
⇓
教えて下さい。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
No4です
>教えていただきたい内容を手作業でしております。
>凄く時間を要してしまいます。そこで、VBAでできないか思いましたが、むずし過ぎて
であれば、その手作業の処理をそのままVBAにすれば良いのでは?
とりあえず、マクロの記録をネタにして、処理範囲を可変にしてゆくことでも可能と思います。
コツとしては、手順を分割して、判断を単純化することでしょうか。
例えばNo4の作業列のBA、BB、(BC)列のように、対象になるのか否か等を一旦表示しておくとか。
一気にやろうとすると、(多分)わけがわからなくなるのではないでしょうか。
処理を分解して経過を表示することで、デバッグもやり易くなるものと想像します。(まぁ、処理速度は落ちますけれど…)
いずれにしても、私には、ご質問文からでは何をどうしたいのかよくわからないので、コード化はできませんが悪しからず。
No.7
- 回答日時:
Excelでデータを扱う場合は1行1データが基本です。
2行1データというのは格段に難しくなり融通がつかなくなりますよ。
そこからまず見直してください。
どうしても2行1データにしたいのならば
1行1データで処理をしたのち、出力フォームで2行1データにしてください。
皆さんがおっしゃられるようにできないことはありません。
でも、少しの変更をする場合でも大変ですよ。
No.5
- 回答日時:
No4の指摘どおり
データは 1行単位が基本です
今後のメンテを考えると 今 データ構造を見直すべきだと思います
中途半端に取り繕うと さらに地獄が待っています
No.4
- 回答日時:
こんにちは
No1様の疑問点に追加で・・・
>切り取りとったデーターを番号順に挿入する
結果の例を見ても、普通の昇順でソートされているようには見えないので、独特のロジックで並びを制御しているとしか思えません。
ご質問の内容は、全体をロジカルに説明できるならば、関数でも可能と思います。
(データの処理としては2行一組よりも1行に記述する方式の方が、VBAでも(特に関数の場合は)容易になるはずです。)
複雑にしておいてわからなくなっているものを、誰かに作ってもらっても、修正も変更もできないものになるだけかと推測します。
そのような観点からは、関数での処理の方がまだ、メンテはしやすいのではないでしょうか。
(質問者様の理解度によりますので、VBAの方が得意なら、そちらの方が良いのかも知れません)
以下に、関数で行う場合の一例を示しておきます。(あくまでも一例です)
(BA、BB列を作業列として利用)
1)BA列に挿入条件に合致するか否かを表示
2)BB列に並べ替えのキー(A列の奇数行がキーか?)を対象だけ転記
3)別シートにBB列をキーにして、順序(独特なので序列が不明)に合せて転記
(序列計算が複雑な場合は、BC列に序列だけ先に算出しておくなどもありかと)
以上で、並べ替えられるはずなので、必要に応じて、セル全体をコピー、値をペーストでFIXすれば宜しいでしょう。
No.3
- 回答日時:
やはり 何をしたいのかよくわかりません
データの並べ替えをしたいのはわかりますが。。
データの貼り付け先の法則性が不明です
12行下ってどこですか?
もう少し相手にわかるようにしっかりと書きましょう
No.1
- 回答日時:
回答をする前に、
とても無駄なことをやっているように思えてなりません
データの規則性、法則性は無いのですか?
今後データの構造を見直す予定はないのですか?
質問の内容に対し 回答できなくはありませんが、
力業での処理になります
挿入する行の空きが一定かどうか不明
判定条件のsが小文字と言いながら サンプルは大文字
Sの前にスペースがあるのか無いのか?
(サンプルがまばら)
(指示部品)のカッコが半角/全角が統一されているのかどうか
(手入力だとバラバラになっている可能性
処理のロジックとしては
上から最終行までループ処理し、
判定条件のSを左から1文字目にあるかどうかを関数で調べる
And条件で一つ下のセルの値が (指示部品) であるか
2つの条件が一致すれば
配列にデータを格納し、
該当行を削除
ネストしたループ処理で今度は空白セルを調べ、
該当したらそこへ配列に格納したデータを吐き出す
一つ下のセルが空白でなければ1行挿入し
データを吐き出す
ここで問題になるのが、見た目は空白セルであっても
スペースが挿入されていると データありになる為
セルが空白であるとは認識されない
そのシートで空白が存在しないことになっているのであれば
最初に置換処理でスペースを削除しておく必要があります
いずれにしても 力業の場合
処理後に確認する必要がある為
自動化の本末転倒になってしまいます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
更新前と更新後の差分をVBAを使...
-
Excelデータの照合
-
エクセル 担当者ごとにブラン...
-
エクセルで別のシートに数行お...
-
エクセル日付 文字列の関数がエ...
-
EXCEL 階段状のグラフ
-
SUMPRODUCT関数 行が増えても...
-
EXCEL 売上予測の求め方
-
複数の候補列から、検索値と一...
-
エクセル、正数のみの集計[(負...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
お店に入るために行列に並んで...
-
えエクセルで○は1とし△は0.5で...
-
PowerPointで表の1つの列だけ...
-
Excelで中央揃えが出来ない?
-
VBAで文字列を数値に変換したい
-
Excel強制終了
-
EXCELで 一桁の数値を二桁に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
Excel関数:「0」を除いた標準...
-
SUMIFで数値が入力されているセ...
-
値の入っているセルのうち、一...
-
Excel関数で、範囲内の最後のセ...
-
ピボットテーブル 0個の行を...
-
エクセル、正数のみの集計[(負...
-
エクセルに入力された日付「S40...
-
入力するとかってにセルの色が...
-
《エクセル2000》重複している...
-
エクセル 8ケタの数字から日数...
-
エクセルで何種類のデータがあ...
-
SUMPRODUCT関数 行が増えても...
-
Excelのマクロで行を間引きたい
-
複数の候補列から、検索値と一...
-
エクセルVBAを使ってセルに日付...
-
エクセルで電話番号を - で分...
-
Excelで複数列かつ複数行分の一...
おすすめ情報
ありがとうございます。
説明不足、言葉足らずですみません
>判定条件のsが小文字と言いながら サンプルは大文字
データー番号の語尾に小文字のSが付きます
>Sの前にスペースがあるのか無いのか?
ありません
>(指示部品)のカッコが半角/全角が統一されているのかどうか
括弧は半角です
>ここで問題になるのが、見た目は空白セルであっても
データー等はありまでん、空欄です
やはり無理なのでしょうか
回答いただき誠にありがとうございます。
データーは、取引相手より送られてくるもので、データー数が1000くらいあり
今回、教えていただきたい内容を手作業でしております。
凄く時間を要してしまいます。そこで、VBAでできないか思いましたが、むずし過ぎて
私では、対応できず投稿いたしました。
VBAでの対応が希望です。
親切に回答頂きありがとうございます。