プロが教える店舗&オフィスのセキュリティ対策術

A    B    C     D        E
点名  高さ   幅    式       面積
0.0   0.0   2.0
10.0  10.0   3.0  (2.0+3.0)*10.0/2  25.0
15.5  5.5   2.5  (3.0+2.5)*5.5/2  15.1
・    ・    ・     ・        ・
というような単純な計算式を表示した表をマクロにて作りたいと思いました。
しかし、入力される行が不定のためわけが分からなくなってしまいました。

質問内容としては、
高さ、幅が入力されている状態で別シートに上記表と同じものを作りたいです。(できたら罫線付きで)(又は隣のセル。上記のように)

ちなみに先にも書いてありますが
行(列?縦方向です^^;)は不定です。
数は決まっていません。

どうかご教授いただきたいです。

また、質問で「意味わからんぞ!」というのがありましたら
補足いたしますのでよろしくお願いいたします。

A 回答 (3件)

#2のお礼に関して。


結果は同じになる場合も多い。
途中に空白セルがある場合のことを考えて、経験的にこの方が安全かなと習慣化しているだけ。
UsedRange、Currentregionなども勉強して、使い分けてください。
回答者の回答が(特にOKWAVEぐらいでは)絶対ではない。
どちらが良いのか勉強して、良いとこ採りができるようになってください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

これから勉強します。

お礼日時:2006/06/28 10:18

関数で十分な内容です。

マクロのお勉強ですか。
宿題ではないのかな。
VBの問題ではなく、エクセルVBAらしいですので、表題内にその語句を上げてください。
例データ Sheet1でA1:C4
台形について
底辺上辺高さ
2025
10310
15.52.55.5
結果
Sheet2に A1:E4
底辺上辺高さ式台形面積
2025(20+ 2)*5/255
10310(10+ 3)*10/265
15.52.55.5(15.5+ 2.5)*5.5/249.5
コード
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
D = sh1.Range("A65536").End(xlUp).Row
MsgBox D
For i = 2 To D
sh2.Cells(i, "A") = sh1.Cells(i, "A")
sh2.Cells(i, "B") = sh1.Cells(i, "B")
sh2.Cells(i, "C") = sh1.Cells(i, "C")
sh2.Cells(i, "E") = (sh1.Cells(i, "A") + sh1.Cells(i, "B")) * sh1.Cells(i, "C") / 2
sh2.Cells(i, "D") = "(" & sh1.Cells(i, "A") & "+ " & sh1.Cells(i, "B") & ")" _
& "*" & sh1.Cells(i, "C") & "/" & "2"
Next i
End Sub
ーーー
(1)Setを使う
(2) sh1.Range("A65536").End(xlUp).Rowをつかう
(3)Cells( )を使う
よさを、勉強して味わってください。Sheet2の第1行見出しは
VBAでは略。
セル書式とかは略。
略とは自分で勉強せよということ。
ーー
台形で、質問にある「点名  高さ   幅 」というのかな?教科書で確認のこと。
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^

自分なりに勉強しました。

そこで質問があります。
imogasiさんは
D = sh1.Range("A65536").End(xlUp).Row
とされていますが、
D = sh1.Range("A1").End(xlDown).Row(スペル違うかも^^;)
ではだめなんでしょうか?

試してみたら同じ結果になりましたけど
なぜ、最終行から上へと参照したのでしょうか?
もしよろしかったら教えていただきたいと思います。

お礼日時:2006/06/21 11:34

マクロじゃなくて、関数を使った方がいいようなきがします。


e3のセルに
=(c2+c3)*b3/2
と入れて、後はこれを下のセルにコピー

式を表示したければ
d3のセルに
"("&str(c2)&"+"&str(c3)&")*"&b3&"/2"
と入れたらどうでしょう。
後はこれを下のセルにコピー
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^

関数でできたんですね^^;
マクロの勉強しながらだったので、
関数でできるとは思ってもいませんでした^^;

お礼日時:2006/06/21 11:22

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