- ベストアンサー
エクセルのデータ処理
fumufumu_2006の回答
- fumufumu_2006
- ベストアンサー率66% (163/245)
こんなのはどうでしょうか? これもユーザー関数です。 ユーザー関数は基本的には答えを返すだけなので、問題を作る関数と答えを作る関数をわけました。 標準モジュールに下のモジュールをコピーしてもらえれば、 makeQuestion(文章 , 答えの単語位置 [,答え欄の幅]) makeAnswer(文章 , 答えの単語位置) と言う関数が使えるようになります。 makeQuestionの答え欄の幅は省略可能ですが、省略すると答えの文字数に比例した幅になります。 用意ができたら、質問のA列-G列が1行目だった場合、C1,D1,F1,G1を以下にしてみてください。 C1=makequestion(A1,B1,20) D1=makeanswer(A1,B1) F1=makequestion(A1,E1,20) G1=makeanswer(A1,E1) '以下を標準モジュールへ '問題を作る 'str:元の文 'n:カッコにする単語の番号(複数はカンマで区切る) 'answerSize:答えの幅を固定幅にする場合(省略可) Function makeQuestion(str As String, n As String, Optional answerSize As Integer = 0) As String Dim w() As String Dim p() As String Dim i As Integer Dim spaceSize As Integer w = Split(str, " ") p = Split(n, ",") For i = 0 To UBound(p) If answerSize > 0 Then spaceSize = answerSize Else spaceSize = Len(w(p(i) - 1)) + 5 '()内サイズは答えの幅に適当な定数を加えた幅 +5は適当に調節してください End If w(p(i) - 1) = "(" & Space(spaceSize) & ")" Next makeQuestion = Join(w, " ") End Function '答を作る 'str:元の文 'n:カッコにする単語の番号(複数はカンマで区切る) Function makeAnswer(str As String, n As String) As String Dim w() As String Dim p() As String Dim i As Integer Dim ans As String w = Split(str, " ") p = Split(n, ",") For i = 0 To UBound(p) ans = ans & w(p(i) - 1) & " " Next makeAnswer = Trim(ans) End Function
関連するQ&A
- 英訳の問題です お願いします
「カナダでは英語とフランス語の両方がはなされます。」 これを Both English and French are spoken in Canada. としたのですが。 模範解答では In Canada both English and French are spoken. となっていました。自分の解答では間違えでしょうか。 くだらない質問ですが。よろしくお願いします。
- ベストアンサー
- 英語
- 問題 English and French __ in Canada
問題 English and French __ in Canada. 以下より空欄に入るものを選び、その理由を説明せよ。 アspeak イspoken ウare spoken エare spoken by 正解は『ウare spoken』となり、 “英語とフランス語はカナダで話されています。” という訳になるのですが、 何故、そうなるのか? という理由が上手く説明出来ません。 なるべくスマートな説明文を教えて下さい! よろしくお願いします。
- 締切済み
- 英語
- EXCEL VBA で データを集計したい。
よろしくお願いします。 添付の資料の通り、データを格納しているシートがあります。 項目は、 ・処理日 ・科目 ・D列 ・E列 ・F列 とあったとし、抽出条件は、 ・処理日の範囲指定 ・科目の指定 としたいと思っています。 VBAで処理したいのですが、まずはEXCEL関数のDSUMを使用し、添付の通り指定して、 抽出されることを確認しました。 これと同様の抽出をVBAで行いたく、VBAでワークシート関数を使用するために、 Dim x As Variant x = Application.WorksheetFunction.DSum(Range(Cells(3, "A"), Cells(15, "E")), "D列", Range(Cells(3, "O"), Cells(4, "Q"))) とし、正しく値を取得することができました。 ですが、条件を指定する部分を、セルで指定するのではなく、例えば "処理日" >= 20151001 and "処理日" <= 20151002 and "科目" = "01" のように、式をVBAで生成して作成したいのですが、方法はありませんでしょうか? ACCESSのDSUM関数のような記述ができませんでしょうか? お手数をおかけします、よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- エクセルの関数でのデータ処理が重い
お願いします。 エクセルで2万件のデータを関数処理しています。時間がかかるのでVBAで処理できればと 考えています。 A列に当日の顧客コード B列に前日の顧客コード 以下の式によって、前日と当日を比較して増えた顧客と減った顧客を表示させています。 C列に=IF(COUNTIF(B$2:B$23000,A2)>=1,"","増")の関数が入っています。 計算させた後でC列をオートフィルタで増のみ表示し、確認。 D列に=IF(COUNTIF(A$2:A$23000,B2)>=1,"","減")の関数が入っています。 計算させた後でD列をオートフィルタで減のみ表示し、確認。 これをVBAで処理して時間の短縮をしたいのでお教え頂ければ幸いです。 宜しくお願いします。
- 締切済み
- オフィス系ソフト
- 英語 文法 接続詞
・日本文の意味に合うように、( )に適語を入れなさい。 (1)英語とフランス語の両方が、カナダで話されている。 (Both)Engish (and) French are spoken in Canada. (2)私たちは別の国々の出身だけれど、いい友達だ。 ( )we are from different countries, we are good friends. (3)甲子園は大阪ではなく兵庫にある。 Koshien is ( ) in Osaka ( ) in Hyogo. (4)海外に行く前に、少しお金を両替しておきなさい。 Change some of your money (before) you go abroad. (5)家に帰ってくるとすぐに、彼は寝てしまった。 (As) (soon) as he came home, he went to bed. 予想できたところには候補を入れてみました。 間違っている可能性大なので間違っている個所は添削、よろしくお願いします_(._.)_
- ベストアンサー
- 英語
- 受動態から能動態に書き換えが理解できません。
English is spoken in Canada ↓ They speak English in Canada. なぜthey が文頭にくるのか理解できません。 people や Canadian では誤りでしょうか ご指導お願いします。
- 締切済み
- 英語
- Excell2002でのデータ処理
Excell2002でのデータ処理に関数の使用を考えてます。 例えば、以下のようなデータがあります。 A列, B列 ,C列 1 , 10 , 2 , 12 , 3 , 8 , 10 5 , 15 , 8 8 , 20 , 9 , 18 , 10 , 16 , 20 ・ ・ (列がきれいに表示されてませんが!) A列は通し番号でありますが、中にはA列B列ともに同じ行で欠測値があります。 要はC列に「A列ー2の行」のB列の値を入れたいのです(上記C列参照)。 勿論B列に欠測値があるので該当する値がなければ「ブランク」とします。 ⇒C列にどのような関数を使えば良いのでしょうか? ⇒IF関数かとは思いますが・・・? ご教示ください。
- ベストアンサー
- オフィス系ソフト
補足
早々とご回答ありがとうございます。 当方、VBEに素人で、標準モジュールにコードを貼り付けて実行したものの何も起こりません。今まではいろんなデータ処理をユーザー関数を教えてもらってうまくいっていました。 C1=makequestion(A1,B1,20) D1=makeanswer(A1,B1) F1=makequestion(A1,E1,20) G1=makeanswer(A1,E1)は入れております。 操作のどこがおかしいのかわかりません。初歩的なことかと思いますが対処法をよろしくお願いします。