- ベストアンサー
エクセル計算式、VBAについて
- エクセル計算式、VBAについての質問です。加工後の結果でおかしいのが、「箱内数量」です。正常な結果を求めるにはどこを修正すればよいでしょうか?
- エクセル計算式、VBAによる加工後の表で問題が発生しています。特に、「箱内数量」の値が正しくありません。どの部分を修正すれば正常な結果が得られるのでしょうか?
- エクセル計算式、VBAを使用して表を加工する際に問題が発生しています。特に、「箱内数量」の値が正しくありません。どのような修正が必要でしょうか?
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- エクセルのVBAで悩んでいます。
いつもありがとうございます。 エクセルのVBAで悩んでいます。 セルの範囲指定をVBAで行いたいのです。 ただし、引数に数値変数を使用する為、Cellsプロパティを使います。 すると、離れている範囲の範囲指定が出来ないのです。 例えば、Rangeプロパティだと、 Range("A5:E5,A9:E32").Select こうなるところを、 A9:E32 を変数に置き換えたくて、 Range("A5:E5", Cells(g, 1), Cells(h, 5)).Select と、するとエラーが出ます。 VBAの前文は次の通りです。 Private Sub CommandButton1_Click() a = Me.TextBox1.Value b = Me.TextBox2.Value Set c = Range("a:a").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) Set d = Range("a:a").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) 'MsgBox c + d e = c.Address 'MsgBox e f = d.Address 'MsgBox f g = Range(e).Row MsgBox g h = Range(f).Row MsgBox h Range(Cells(g, 1), Cells(h, 5)).Select End sub よろしくお願い致します。
- 締切済み
- Windows XP
- エクセルVBAで最小値を求めたいのですが
下記はある表の最大値を求めるものですが 同様の条件で最小値を求めようと思い 「MAX」の箇所を「MIN」差し替えてできると思っていたのですが 最小値がのかわりに「0」が表示されてしまいます。 そのように修正すればよいでしょうか? private sub worksheet_change(byval Target as excel.range) if target.cells(1) = "" then exit sub if target.address = "$A$1" then Range("C10:C65536").ClearContents With Range(Cells(9 + Range("A1").Value, "C"), Cells(Range("A65536").End(xlUp).Row, "C")) .FormulaR1C1 = "=MAX(RC2:R[" & -Range("A1").Value + 1 & "]C2,FALSE)" .Value = .Value End With elseif target.address = "$E$1" then Range("G10:G65536").ClearContents With Range(Cells(9 + Range("E1").Value, "G"), Cells(Range("E65536").End(xlUp).Row, "G")) .FormulaR1C1 = "=MAX(RC6:R[" & -Range("A1").Value + 1 & "]C6,FALSE)" .Value = .Value End With end if end sub
- ベストアンサー
- オフィス系ソフト
- VBAによる日付入力が
いつもお世話になります。 WINDOWS7 EXCELL2010Qです。 「入力」のコマンドボタンをクリックして入力するのですがその時、 なぜか添付画像のように 02/01(N 2)と入力してもA列は01/24と表示されます。 N2の値がB列に入力されるマクロを下記のように設定してます。 何が原因かをご教示いただけないでしょうか。 「入力」 Sub 入力() Dim GYOU '追加 GYOU = Range("C65536").End(xlUp).Row + 1 Cells(GYOU, 2).Value = Range("N1").Value Cells(GYOU, 3).Value = Range("N2").Value Cells(GYOU, 4).Value = Range("N3").Value End Sub 「セルセット」 Sub セルセット() ' マクロ記録日 : 2010/4/30 ユーザー名 : YOKOHAMA Range("N1,N2,N3,N1").Select End Sub 以上ですがよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Excel VBA
初心者で済みません 少し困っています。よろしくお願いします。 Range("J17") = Range("F17") * Range("H17") If Range("J17").Value = "0" Then Range("J17").Value = "" End If Range("J18") = Range("F18") * Range("H18") If Range("J18").Value = "0" Then Range("J18").Value = "" End If Range("J19") = Range("F19") * Range("H19") If Range("J19").Value = "0" Then Range("J19").Value = "" End If 上記のコードを簡単にしたいのですが、どうすればいいのか、わかりません。どうか教えていただけませんでしょうか?
- ベストアンサー
- Visual Basic
- 入力の方法 その2
http://oshiete1.goo.ne.jp/qa5018717.html にてご協力いただいたものを再質問させていただきます。 A列からD列のみなら「ボタン124」をクリックすると7行から順調に入力されます。 しかしE列からF G H I 式などが入っていると、式が入っていない以外に入力されます・ 図(実際は2000行があります)で言うと 7 8 行のE~L 列に数式があります。 故に9の行に入力されます。 参考 1 ボタン124 マクロ Sub ボタン124_Click() Dim GYOU '追加 GYOU = Range("A65536").End(xlUp).Row + 1 Cells(GYOU, 1).Value = Range("C1").Value Cells(GYOU, 2).Value = Range("C2").Value Cells(GYOU, 3).Value = Range("C3").Value Cells(GYOU, 4).Value = Range("C4").Value End Sub 2 E7 =TEXT(B7,"yymmdd")&C7 3 F7 =IF(C7="","",VLOOKUP(C7,売掛管理補助!$A$2:$B$201,2,FALSE)) & " " と言う具合に式が入っています。 多分マクロで何かの方法があると考えますがご教授いただけないでしょうか よろしく御願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAを教えて下さい
エクセルの表で -AB C D E F 1年月--1801 2------ 3------ 4------ (-)は空欄でセルE1=18、F1=1とします。 コントロールボックスをつかって Private Sub Command登録_Click() Dim d1 As Long Dim d2 As Long Dim ret As Variant Dim FindValue As String Dim TotalAddress As String If Range("E1").Value = "" Or Range("F1").Value = "" Then MsgBox "該当する場所にデータが入っていません。", vbCritical Exit Sub End If d1 = Range("A65536").End(xlUp).Offset(1).Row d2 = Range("B65536").End(xlUp).Offset(1).Row FindValue = """" & Range("E1").Value & Range("F1").Value & """" TotalAddress = Range("A1").Resize(d1).Address & "&" & Range("B1").Resize(d1).Address ret = Evaluate("MATCH(" & FindValue & "," & TotalAddress & ",0)") If IsError(ret) Then Cells(d1, 1) = Range("E1").Value Cells(d2, 2) = Range("F1").Value Else MsgBox "既に同じ組み合せがあります。", vbInformation End If End Sub というものを作ったのですが、E1=18、F1=1及びコマンドボタンを別シートに作成し、上記の表への登録をできるようにしたいのですが、なにかいい方法はありませんか?
- ベストアンサー
- オフィス系ソフト
- excel VBAで計算式を入力したい
下記の計算式をVBAから入力したいのですが、うまくいきません。 =SUMPRODUCT((稼動データ!F2:F89="C")*(稼動データ!E2:E89={49,65,66,67,68,70,73,74,93,8106,8169,8192,8194,8561})*稼動データ!I2:I89) 文字列は、""で囲むのは判っているのですが。。。 いくつか試しましたがうまくいきません。 Range("M43").Formula = の後にどのような式を入力すればうまくいきますか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでPDFを1枚目のみ印刷したい
下記のVBAに複数PDFが重なっている場合は、一枚目のみ印刷する文面を 挿入したいのですがうまくいきません Sub Test() Dim z As Object Dim i As Long Dim f, p As String Application.ScreenUpdating = False Set z = CreateObject("WScript.Shell") p = Application.ActivePrinter For i = 1 To Range("A1").End(xlDown).Row f = "h:\hozei\" & Cells(i, 1).Value & ".pdf" If Dir(f) <> "" Then z.Run ("AcroRd32.exe /t " & f) Else Cells(i, 2).Value = Cells(i, 1).Value Cells(i, 1).Value = "" End If Next i Set z = Nothing End Sub お忙しいところ申し訳ございません どなたかご教示願います。
- ベストアンサー
- Visual Basic
- エクセル VBA 計算方法
計算をエクセルのマクロで行いたいたくて計算式を作ったのですが 計算のG列の項目の中に「(5.2)万」のように( )のようにがついているものが 計算の項目のなかにあり、答えが-マイナスになってしまいます。 もし( )がついてたら( )のマイナスがプラスに変換できるように組込めないですか? ちなみに式はこちらです Dim nLast As Long nLast = WorksheetFunction.Max(2, Range("J" & Rows.Count).End(xlUp).Row) Range("K2").Formula = "=VALUE(SUBSTITUTE(G2,""万"",""""))*10000+VALUE(SUBSTITUTE(H2,""円"",""""))+IF(J2=""-"",0,VALUE(SUBSTITUTE(J2,""円"","""")))" If nLast > 2 Then Range("K2").AutoFill Destination:=Range("K2:K" & nLast) End If '式を入れたいだけならここまで。値だけにしたいなら以下も必要 Range("K2:K" & nLast) = Range("K2:K" & nLast).Value
- 締切済み
- Visual Basic
- エクセルVBAについて
http://okwave.jp/qa/q7236213.html 上記質問の発展形なのですが 同様のことを E列に日付 F列に売上 G列に結果 でやりたいのですが この時A列~C列のマクロも残したままでしたいのですが 下記のように同様のプロシージャーを下段に書けばできると思ったのですが うまくいきません。 Private Sub worksheet_change(ByVal Target As Excel.Range) If Target.Address <> "$A$1" Then Exit Sub If Target = "" Then Exit Sub Range("C10:C65536").ClearContents With Range(Cells(9 + Range("A1").Value, "C"), Cells(Range("A65536").End(xlUp).Row, "C")) .FormulaR1C1 = "=MAX(RC2:R[" & -Range("A1").Value + 1 & "]C2,FALSE)" .Value = .Value End With End Sub Private Sub worksheet_change(ByVal Target As Excel.Range) If Target.Address <> "$E$1" Then Exit Sub If Target = "" Then Exit Sub Range("G10:G65536").ClearContents With Range(Cells(9 + Range("E1").Value, "G"), Cells(Range("E65536").End(xlUp).Row, "G")) .FormulaR1C1 = "=MAX(RC6:R[" & -Range("A1").Value + 1 & "]C6,FALSE)" .Value = .Value End With End Sub どなたかお知恵を拝借できませんでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
おっしゃる通りでございます。 私はほんとに失礼なことをしてしまったと、事の重大さを今になって感じている所です…。 本来であれば、Wendy02様にご教示いただいたVBAにて学ぶべきでありました。 それは私も重々承知しておりましたが、実は非常に申し上げにくい理由がありまして・・・ 今回の質問の流れを見ますと、多くのご教示をいただきながら、 回を重ねるごとに改良を加えていって、より完成度の高いものに仕上がってきました。 Wendy02様には、言葉では言い尽くせないほどの感謝の思いでございます。 それだけに・・・ 非常に申し上げにくいことがありまして、 実は、Wendy02様にご教示いただきましたVBAを動作致しますと、 基本動作はとても理想の形で良かったのですが、 どういうわけか、意図していない付加的な動作が加わってしまう現象がありまして・・・。 例えばほんとに些細なことなのですが、 加工後シートの罫線が一部(一本だけとか)消えてしまったり、 文字の大きさが一部小さくなってしまったりという現象が起きておりました。 これがVBAの影響によるものなのか、私の操作ミスというか当方に原因があるものなのか、 判断がつかなくて困っていたのです。 そのあたりも本当は質問したかったのですが、 せっかくお時間を割いて作って下さったVBAなのに、 文字がどうとか、罫線がどうとかなんて、細かい所にケチを付けるようなことを言ってしまったら気分を害されるのではないかと思ってしまいまして・・・。 色々と気にし過ぎる性格なもので、どうしようかあれこれ考えていたら、 結局何も言えなくなってしまいまして・・・。 しかしそれが逆にもっと失礼な結果になってしまったことに気付き、今非常に反省しております。 ですので、悪意が無かったということだけはどうかご理解いただけると私も本当に救われる思いです。 あらためて今回ご教示下さいましたVBAで確認してみましたら、 以前のような意図していない動作がウソのように消えていたんです。 やはりあれは当方のなにか原因だったのだろうと思っております。 せっかく手取り足取りご教示下さっているのに、それを踏みにじるようなことをしてしまい、 本当に心から申し訳ございませんでした。 現在は、今まで気になっていた部分が消えましたので、 Wendy02様のVBAに完全に移行出来ました。 私は本当に余計なことまであれこれ考え過ぎてしまう性格なもので・・・ よくないですね、こういうのは。 やっぱり思ってることは正直に話すべきだと思いました。 それで今回いただきましたVBAについてですが、気になる所が2箇所出てきてしまったので、 何度もお手数をお掛けしまして、本当にお聞きしにくいことなのですが、 ここは勇気を持ってお尋ねしたいと思います。 ★気になる箇所 1.加工後シートのE列(箱連番(営業所毎))は従来の昇順のままでよかったのですが、今回は降順になってしまいます。 2.仮に「送付する総数量」が150、「1箱の最大入り数」が50 といったように、 端数が出なくて割り切れる数字の場合 50 50 50 となるはずですが、 0 50 50 となってしまいます。 これはどこを修正したらよろしいでしょうか? 念のため、私のエクセルファイルをオンラインストレージにアップロードしました。 気になる箇所を黄色と赤で目立つように色分けしてみました。 参考になりますでしょうか? http://www.filebank.co.jp/filelink/d82ce4b05aa1f71a44fad4fea1d0cf38 何卒宜しくお願い申し上げます。