電子書籍の厳選無料作品が豊富!

以前にも同じような質問を致しましたが少し変更があった為再度
質問させて頂きます。
日々あるデータが送られてきます。
A~AEまであります。項目は1行目でセルが黄色で塗り潰されています。

マクロで下記のようにしたいのです。
残すのはA、C、N、T、U、V、W、Z、AAのみですが順序を入替えたい。
順番としてC、A、T、U、W、V、AA、Z、Nの順です。
元々は違う名前で入ってるのですがZの項目を「仕入単価」と書き換えたい。
AAの項目を「数量」と書き換えたい。
AAとZの掛け算を出したい。出す場所はZとNの間の列に新たに列を作りそこに出す。
その列の項目には「合計金額」と入れ他の項目と同じように黄色で塗り潰す。
さらにZの単価は基本的に330.00のように小数点以下二桁が入っています。
たまに100.50のように単価に銭が入る事があります。
その場合の計算として例えば仕入単価100.50で数量が5とすれば答えは502となり
銭も計算した上で合計のところで小数点以下は切り捨てにされます。
表示も502.00のようにするのではなく502と小数点を表示させたくありません。

以上、細かい指示ばかりで申し訳ありませんが教えて頂けると有り難いです。
もし補足が必要なら申し付け下さい。

A 回答 (7件)

> 教えて頂いたマクロを見ながらいろいろと試したのですがどうも上手くいきません。


> その辺り分り易く教えて頂けると嬉しいです。

ご自分で列の順序の入れ替えをマクロの記録でやってみてどのような記述になるのか見てみましたか?
とりあえず回答は書きましたが、自分でなおせないと応用がきかなくて困ると思いますよ。

Sub TEST04()
Dim x As Long
With ActiveSheet
.Columns("C").Cut
.Columns("A").Insert Shift:=xlToRight
.Columns("T:U").Cut
.Columns("C:D").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("E").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("F").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("G").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("H").Insert Shift:=xlToRight
.Columns("O:P").Cut
.Columns("I:J").Insert Shift:=xlToRight
.Columns("K:AE").Delete Shift:=xlToLeft 'J列不要の場合は("J:AE")にする
.Columns("I").Insert Shift:=xlToRight
.Range("G1") = "数量"
.Range("H1") = "仕入単価"
.Range("I1") = "合計金額"
x = .Range("H" & .Rows.Count).End(xlUp).Row
.Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)"
.Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)"
.Range("G2:G" & x).NumberFormatLocal = "0;[赤]-0"
.Range("I2:I" & x + 1).NumberFormatLocal = "#,##0;[赤]-#,##0"
.Range(.Range("A1"), .Range("A1").End(xlToRight)).Interior.ColorIndex = 6
End With
End Sub
    • good
    • 0
この回答へのお礼

何度もお手数をお掛けし申し訳ありませんでした。
丁寧に教えて頂きました事、心から感謝申し上げます。


>ご自分で列の順序の入れ替えをマクロの記録でやってみてどのような
>記述になるのか見てみましたか?
>とりあえず回答は書きましたが、自分でなおせないと応用がきかなくて
>困ると思いますよ。

おっしゃる通りです。
少しずつですが勉強していきたいと思います。
本当に有難うございました。

お礼日時:2007/05/22 16:42

おはようございます。

merlionXXです。

> G列、I列の中で-(マイナス)の表示がされる事があります。
> その際にその数字を赤文字で表示させたいのですが、

セルの書式設定を変えればいいというのはわかりますよね?
ご自分でマクロの記録で書式設定の変更をやってみて、それがどのような記述になるのか一度見てくださいね。
今回は下記のような修正になります。
GとI列はマイナス時は赤字、I列はさらにカンマが入るんでしたね。

Sub TEST03()
Dim x As Long
With ActiveSheet
.Columns("C").Cut
.Columns("A").Insert Shift:=xlToRight
.Columns("T:U").Cut
.Columns("C:D").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("E").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("F").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("G").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("H").Insert Shift:=xlToRight
.Columns("T").Cut
.Columns("I").Insert Shift:=xlToRight
.Columns("J:AE").Delete Shift:=xlToLeft
.Columns("I").Insert Shift:=xlToRight
.Range("G1") = "数量"
.Range("H1") = "仕入単価"
.Range("I1") = "合計金額"
x = .Range("H" & .Rows.Count).End(xlUp).Row
.Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)"
.Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)"
.Range("G2:G" & x).NumberFormatLocal = "0;[赤]-0"
.Range("I2:I" & x + 1).NumberFormatLocal = "#,##0;[赤]-#,##0"
.Range("A1:J1").Interior.ColorIndex = 6
End With
End Sub
    • good
    • 0
この回答へのお礼

有難うございます。
何度も感謝致します。
希望通りになりました。

さらに今後の可能性として下記のような場合も考えらるのですが、
(またか!とお叱りを受けるのを覚悟で質問させて下さい)

元データのN列が最後に来ますが、これがN列では無くI列が最後の場合、
又はI列、J列と二つの列が最後の場合はどうなるのでしょうか?
N列は必要無しです。

その他はまったく同じ条件です。

教えて頂いたマクロを見ながらいろいろと試したのですがどうも上手くいきません。
その辺り分り易く教えて頂けると嬉しいです。

お礼日時:2007/05/21 18:04

> 一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには


> どうすれば良いのでしょう?
> それとI列のみカンマで区切りを入れたいのですが合わせて教えて下さい。

では、これでいかがでしょうか?
どこが変わったか見比べてください。

Sub TEST02()
Dim x As Long
With ActiveSheet
.Columns("C").Cut
.Columns("A").Insert Shift:=xlToRight
.Columns("T:U").Cut
.Columns("C:D").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("E").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("F").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("G").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("H").Insert Shift:=xlToRight
.Columns("T").Cut
.Columns("I").Insert Shift:=xlToRight
.Columns("J:AE").Delete Shift:=xlToLeft
.Columns("I").Insert Shift:=xlToRight
.Range("G1") = "数量"
.Range("H1") = "仕入単価"
.Range("I1") = "合計金額"
x = .Range("H" & .Rows.Count).End(xlUp).Row
.Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)"
.Range("I" & x + 1).FormulaR1C1 = "=SUM(R[" & 1 - x & "]C:R[-1]C)"
.Range("I2:I" & x + 1).NumberFormatLocal = "#,##0"
.Range("A1:J1").Interior.ColorIndex = 6
End With
End Sub
    • good
    • 0
この回答へのお礼

merlionXXさん

何度も本当に有難うございます。
思い通りになりました。
欲を言いますが、あと一つだけ教えて下さい。
G列、I列の中で-(マイナス)の表示がされる事があります。
その際にその数字を赤文字で表示させたいのですが、その場合は
どうすれば良いのでしょう?

お礼日時:2007/05/21 08:53

こんばんは。



merlionXX さんから回答が出ていますから、私としては、今のところVBAを書くのは控えますが、

>表示も502.00のようにするのではなく502と小数点を表示させたくありません。

ここの部分ですが、おそらく、片方の単価の部分は、"0.00" で、もう片方の数量が、デフォルト状態で、金額欄は、もともとは、デフォルトの状態のままであったと思うのです。

そういう場合は、単価の書式に引きずられて、金額欄も、"0.00" になってしまうので、意図的に、セルの書式を、"0" または、"#,##0" などとしておいたら、そういう問題は発生しなくなると思います。数式は、merlionXX さんの ROUNDOWN でよいと思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。
私の意図している事が出来ました。
有難うございます。
一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには
どうすれば良いのでしょう?
それとI列のみカンマで区切りを入れたいのですが合わせて教えて下さい。

お礼日時:2007/05/20 16:25

では、前回答えたものをちょといじって・・・



Sub TEST01()
Dim x As Long
With ActiveSheet
.Columns("C").Cut
.Columns("A").Insert Shift:=xlToRight
.Columns("T:U").Cut
.Columns("C:D").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("E").Insert Shift:=xlToRight
.Columns("W").Cut
.Columns("F").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("G").Insert Shift:=xlToRight
.Columns("AA").Cut
.Columns("H").Insert Shift:=xlToRight
.Columns("T").Cut
.Columns("I").Insert Shift:=xlToRight
.Columns("J:AE").Delete Shift:=xlToLeft
.Columns("I").Insert Shift:=xlToRight
.Range("G1") = "数量"
.Range("H1") = "仕入単価"
.Range("I1") = "合計金額"
x = .Range("H" & .Rows.Count).End(xlUp).Row
.Range("I2:I" & x).FormulaR1C1 = "=ROUNDDOWN(RC[-2]*RC[-1],0)"
.Range("I2:I" & x).NumberFormatLocal = "G/標準"
.Range("A1:J1").Interior.ColorIndex = 6
End With
End Sub

でいいでしょうか?
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。
私の意図している事が出来ました。
有難うございます。
一つ後で気が付いたんですがI列の合計を一番下のセルに表示させるには
どうすれば良いのでしょう?

お礼日時:2007/05/20 16:23

こんにちは。



前回、同様のご質問をなさって解決していますね。
http://oshiete1.goo.ne.jp/qa2937725.html

その時に、再び質問するかもしれないとお書きになっていますので、了解はしていますが、今は、どういう状況なのですか?
ここを直してほしいとか、前のものは、うまくなかったとか、最初からというものでもないと思いますが。
    • good
    • 0
この回答へのお礼

御回答有難うございます。

その節は有難うございました。
お陰で前回の分は上手くいきました。
ですが、
「その列の項目には「合計金額」と入れ他の項目と同じように黄色で塗り潰す。
さらにZの単価は基本的に330.00のように小数点以下二桁が入っています。
たまに100.50のように単価に銭が入る事があります。
その場合の計算として例えば仕入単価100.50で数量が5とすれば答えは502となり
銭も計算した上で合計のところで小数点以下は切り捨てにされます。
表示も502.00のようにするのではなく502と小数点を表示させたくありません。」
の部分を追加したいのです。
ただそれだけです。その為に前回の部分も含めて書き直す必要があるのであれば
再度御指示願えればと思います。
度々の事で申し訳ありませんが宜しくお願いします。

お礼日時:2007/05/19 11:06

マクロの記録でできると思いますよ。


順番を入れ替えると考えるからややこしいですが
新しいシートに必要な項目を順に列でコピーしていけば単純ですから。
項目名の書き換えもできますし、数式入力は.end(xlup)を使って最終行を得ればいいでしょう。
単価については
Sub test()
For Each cl In Selection
If cl.Value = Int(cl.Value) Then
cl.NumberFormatLocal = "0"
Else
cl.NumberFormatLocal = "0.00"
End If
Next
End Sub
な感じでよろしいかと。
    • good
    • 0
この回答へのお礼

早々に有難うございました。
参考にさせて頂きます。

お礼日時:2007/05/19 11:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!