cafe_au_laitのプロフィール
- ベストアンサー数
- 143
- ベストアンサー率
- 51%
- お礼率
- 100%
- 登録日2005/01/19
- エクセルで、加算する方法について
エクセル関数で、 例えば、 1、割増、3、通常、5、割増、7、通常というように横A1~H1に入力されている場合、 割増は6、通常は10というように出す方法について教えてください。
- ベストアンサー
- Windows XP
- yamahatss
- 回答数4
- エクセルで、加算する方法について
エクセル関数で、 例えば、 1、割増、3、通常、5、割増、7、通常というように横A1~H1に入力されている場合、 割増は6、通常は10というように出す方法について教えてください。
- ベストアンサー
- Windows XP
- yamahatss
- 回答数4
- エクセルの仕掛けについて教えて下さい。
医学系の抗体価なのですが、「4、8、16,…1,024、2,048、4,096」といった任意の整数(この例では1)×2のX乗というデータの幾何平均値を出す作業をしています。 計算だけであればGEOMEAN及びエラー値を消すためにIF関数を用いれば良いのですが、「<4」、「>4,096」の処理に困っています。それぞれ「<4」→「2」、「>4,096」→「8,192」として計算しますが、報告のためにデータ値の一覧表を印刷しなければなりません。したがって「2」、「8,192」と表示することはできず、それぞれ「<4」は「<4」、「>4,096」は>「4,096」と印刷しなければなりません。計算用と印刷用の別々の表を作って2回入力することはタイプミスのおそれがあるのでできません。 「<4」と入力すると自動的に「2」、「>4,096」と入力すると自動的に「8,192」として計算してくれるような仕掛け、若しくは逆に「2」と入力すると表示だけは「<4」、「8,192」と入力すると表示だけは「>4,096」としてくれる仕掛けを教えていただけないでしょうか?2つの表を連動させて、印刷用のみ表示し、計算用は非表示(折りたたみ)とする方法でも構いません。宜しくお願いします。
- ベストアンサー
- その他MS Office製品
- butasenpai
- 回答数1
- 21名で二人づつのペアでの畑の水入れ当番を作りたいと思います。21名が
21名で二人づつのペアでの畑の水入れ当番を作りたいと思います。21名がそれぞれの所有面積に応じて当番の当たる間隔日数を出しています。期間は考えずにローテーションによって回る当番です。所有面積の多い人で最小間隔日数が(7.74)日一名です。続いて(7.87)一名(9.1)一名(11.5)一名(14.97)一名(19.34)一名(22.1)一名(24.43)一名(25.78)一名(30.94)三名(38.67)二名(46.4)七名です。このそれぞれの間隔日数をあまり崩さないように当番を組んでいきたいのですが、二名ペアだということだとか、とても複雑でできそうにありません。 手書きで作ったりもしてみたのですが、できればエクセルで関数、を使って(マクロ)作りたいと思っています。一度詳しい方に質問したのですが、間隔日数が変動してしまい(その時は期間をきめていたので・・・)この案がメンバーに受け入れてもらえず、再びお知恵をお借りしたく質問させていただいています。私のPCレベルは中級ですが、マクロに関してはほとんど知識がないので、解読文章(わかりやすく)つきで、回答いただきたいと思います。 こんなの簡単だ!!と思われる方は是非回答よろしくおねがいします。 氏名 面積 間隔日数 比較順位 Aさん 60 7.74 1 Bさん 59 7.87 2 Cさん 51 9.1 3 Dさん 42 11.05 4 E 31 14.97 5 F 24 19.34 6 G 21 22.1 7 H 19 24.43 8 I 18 25.78 9 J 15 30.94 10 K 15 30.94 10 L 15 30.94 10 M 12 38.67 11 N 12 38.67 11 O 10 46.4 12 P 10 46.4 12 Q 10 46.4 12 R 10 46.4 12 S 10 46.4 12 P 10 46.4 12 U 10 46.4 12 面積 合計464 このような感じです。困っています。間隔日数をある程度保ちながらできるだけ公平に組み合わせたいのです。 よろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- noname#116564
- 回答数4
- 1次元配列をワークシートに高速で転記する方法について質問します。
1次元配列をワークシートに高速で転記する方法について質問します。 エクセル2000です。 1000万までの範囲で素数を抽出したいと思いました。 そこで下記のようなコードを書きました。 最初は配列にいれず一個ずつセルに転記させたところ664,579個の素数抽出に1分37秒かかったので、配列を用意して下記のようにしたところ1分15秒まで短縮されました。 質問1:配列を使った割には劇的に短縮されないのはなぜでしょうか? 質問2:下記のコードでは最初に取り込んだ1次元外配列をシートに貼るために2次元に変換する際、2次元方向(列)は256で固定、1次元方向(行)は計算で求めたのですが、その結果、要素数が合わず、後の方のデータがない部分が0とシートに出てしまいます。 こうならない方法がありますか? 質問3:一次元配列をワークシートに配置するため二次元配列に変換するのに、もっと良い方法があったらご教示ください。 質問4:配列をワークシートに転記する場合 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual はあってもなくとも速度に変化がありませんでした。このような貼り付け(配列から一度に転記)には不要なのでしょうか? たくさん質問して申し訳ありません。 宜しくお願いいたします。 Sub test() Dim t As Date Dim a As Long, b As Long, c As Long, Num As Long, r As Long, i As Long, x As Long, y As Long Dim buf As Boolean Dim myPrm() As Long, myRng() As Long t = Now() c = 0 For Num = 2 To 10000000 a = Int(Sqr(Num)) '平方根算出 buf = True For b = 2 To a '除数 If Num Mod b = 0 Then '割切れたら buf = False '素数じゃない Exit For End If Next b If buf Then '割切れなかったら ReDim Preserve myPrm(c) '添字追加 myPrm(c) = Num c = c + 1 '素数カウント End If Next Num r = Application.WorksheetFunction.RoundUp((UBound(myPrm) + 1) / 256, 0) '必要行数取得 ReDim myRng(1 To r, 1 To 256) '2次元配列のサイズ変更 For i = LBound(myPrm) To UBound(myPrm) '2次元配列に格納 x = IIf((i + 1) Mod 256 = 0, 256, (i + 1) Mod 256) y = Application.WorksheetFunction.RoundUp((i + 1) / 256, 0) myRng(y, x) = myPrm(i) Next i Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Cells(1, 1).Resize(r, 256).Value = myRng() 'セル範囲に転記 Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True MsgBox c & "個抽出しました。" & vbNewLine & "所要時間:" & Format(Now() - t, "hh:mm:ss") End Sub
- ベストアンサー
- その他MS Office製品
- merlionXX
- 回答数6