- ベストアンサー
VBAのプログラムに関してです
bvltiggeariの回答
- bvltiggeari
- ベストアンサー率76% (33/43)
No.1です。 補足されていたことに気づきませんでした(汗) > 2.エラーがおきてしまうんですよね?あるデータを解析で用いたいのですが1の前に必ず0があるので大丈夫です。 そういうことであればOKです(^^ ソースコードですね? すでにmt2008様が回答されているので不要かもですが 私の作ったのはこのような形です。 Dim aStr As String Dim bStr As String aStr = "00011112233400001123334400011111122233400000" bStr = "12345678912345678912345678912345678912345678" Dim answerStrC As String Dim answerStrD As String Dim beforeAStr As String For i = 1 To Len(aStr) For j = 1 To Len(bStr) If i - 1 > 0 And Mid(aStr, i, 1) = "1" And beforeAStr <> Mid(aStr, i, 1) Then answerStrC = answerStrC & Mid(bStr, i - 1, 1) End If If i - 2 > 0 And Mid(aStr, i, 1) = "1" And beforeAStr <> Mid(aStr, i, 1) Then answerStrD = answerStrD & Mid(bStr, i - 2, 1) End If beforeAStr = Mid(aStr, i, 1) Next j Next i aStrとbStrと特定のセルから取得したい場合は aStr = Range("A1").Value ' (取得したいセル) とかしてあげればいいかと思います。 同様に結果をセルに書きたいのであれば Range("A1").Value = answerStrC とかしてあげて下さい。 aStrが提示されたAの値 bStrが提示されたBの値 answerStrCが提示されたCの値 answerStrDが提示されたDの値 です。 これであってるでしょうか?
関連するQ&A
- エクセルVBAでのまとめ計算
初めまして、よろしくお願いします。 データーで A B C D E ・・・ 1 5 7 2 2 3 7 0 3 4 6 3 6 5 2 8 3 6 0 3 4 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 100 3 4 5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAの繰り返し構文について
A列に日付、B列に曜日、C列に休、D列に1直、E列に2直、という形の年間シフトを作成しています。 初期値としてA2セルに数字を入力→C列が空白の時だけD列に記入するマクロを作成したと思っています。 現在仮として、 Sub C列のセルが空白の行のD列に数値を入力() 下端行 = Range("A" & Rows.Count).End(xlUp).Row '下端検出 For 行 = 3 To 下端行 '1行目から下端行まで1行ずつ繰り返す If Range("C" & 行).Value = "" Then 'その行のC列のセルの値が空白の時 Range("A2").Copy 'A2をコピーする Range("D" & 行).PasteSpecial Paste:=xlPasteFormulas 'その行のA列のセルを起点に 'して数式を貼り付ける End If Next End Sub というマクロを置いていますが、「Range("A2").Copy」の部分を 「A2を初期値として、最初にC列が空白でなくなる時まで初期値を繰り返し、次にC列が空白になった場合は初期値+1の数をD列に入力する。 ただし初期値+1の最大数は6までとする(要するに1~6の繰り返しです)」 という感じに変更したいのですが、どうすればいいのかさっぱりです…。 VBAレベルはこの質問をする程度なのでかなり初級です。
- ベストアンサー
- その他MS Office製品
- EXCEL VBAで
EXCEL VBAで シート1のA2~G2までの列にA,B,C,D~と題名があり、それぞれの下の行には数字が並んでます。シート2のA2~G2までの列にもA,B,C,D~と題名がありますが、ランダムに並んでます。シート1のAの行を、シート2のAの行に、BにはBへという風にコピーをさせるにはどのようにすればよいでしょうか。またシート1A~Gのどれかが欠けている場合もあります。その場合はシート1にあるもののみコピーすることとします。 わかりにくいかも知れませんか、どうかよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- VBAの構文で教えてください
VBAの繰り返し処理 Do Until ~について教えてください。 シートの行列を全て書いてしまうと長くなるので 少し省略させていただきます。 A B C D 1 2008 1 ○ 2008 2 2008 2 × 2008 このような羅列がデータ検索の際に何行になるかわからない状態のデータがあります。 C 列はBが1の場合○、2の場合は× D 列はAが数字があればそのままコピーするようにくみました。 ここで教えていただきたいのが、現在私はCとDの構文は AまたはBに数字があればC,Dに反映するという構文ではなく C、Dの列の最後まで全て数式を入力する構文にしています。 なので、A,Bに入力があってもなくても数式が飛ぶような構文になっています。 そこで、DO Until ~ を使用し A列が空白になるまで処理を繰り返すとすればいいのかなとおもうのですが、 Dim n as integer n=1 Do Until Sheets("sheet1").Cells(n, 1) = "" 空白までという構文(正しいかはわかりませんが)で行き詰っています。 これ以降のAが空白ならDに貼り付ける、 B列も同様に空白まで検索し○または×に置き換えるとは どのうように組み立てたらいいのでしょうか? また、申し訳ないのですが Cが×ならその列の背景を色づける(今回の場合なら2の列) とことまでしてみたいのですが・・・ このようなことが可能であれば教えていただければと思います。 VBAははじめたばかりで不勉強な点も多々ありますがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAのプログラムについて
VBAでプログラムを書いて以下のようなことを実行したいと考えていますが方法がよくわかりません。 ***1002とセルに入力されているセル列に対して、先頭の文字がaaaであったときに、その後ろの1002を計算して数値に変換するという作業です。 仮に、B列でaaa1002とあった場合に、セルの値がaaaであったときのみ、後ろの1002を100×10^2=10000と計算してB列に対応させてC列に出力したいと考えています。 B列 C列 1行目 aaa1002 10000 2行目 aac1001 空白 3行目 aaa4701 4700 : : : 具体的なプログラムのコード、もしくはこのような関数を使えばいいなどヒント等でも構いませんので 教えてください。よろしくお願いします。
- 締切済み
- Visual Basic
- LARGE関数で空白セル数だけ飛ばして記入したい。
LARGE関数で空白セル数だけ飛ばして記入したい。 たとえばA列に連続する数値がランダムに入力されていて、その値の高い値から、LARGE関数で順番をB列に記入しました。しかしA列に空白セルがある場合、空白セル数だけ高い値を飛ばして順番をつけたいのですが、良い方法は御座いませんでしょうか? 例 A列に1から15までランダム記入されていて空白セルが2つあれば13から1、2としていきたいのです。 B1=IF($A$1:$A$15="","",LARGE($A$1:$A$15,A1))↓ と記入すると15、14がエラー表示になって 13から1になってしまいます。それを、13から1、2としていきたいです。 お願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelのVBAに詳しい人に質問です
条件は以下の通りです。 ・A列に数字がランダムで入っているとします。 ・A列は数字のみです。 ・行は作業次第で増えていきます。 ・新しい行に数字を追加するときは行に空白の隙間はなし そこで、ボタン一つ押せばA列の数字全部に「+1」するようなプログラムを作りたいのですが、どうすればよろしいのでしょうか。VBAに詳しい方アドバイスよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- どうVBAを書けばいいのでしょうか
以下のような表があります。 (sheet1) A列 不規則な数列(←一行目にタイトルが書き込まれています) 13 (←二行目から数字がランダムに書き込まれています) 18 44 36 22 14 27 21 32 35 44 12 (以下続く) Case1[i行の値よりi+1行の値が大きく、i+1行の値よりi+2行目の値が大きい件数] Case2[i行の値よりi+1行の値が大きく、i+1行の値よりi+2行目の値が大きく、i+2行の値よりi+3行目の値が大きい件数] などの件数を、新たなシートに書き出したいのです。 上の例からすると、 (sheet2) A列 B列(←B列に件数を書き込む) Case1 3 Case2 1 のような感じです。 if文で作ってみたのですが、うまく処理してくれません。 どのようなVBAを書けばいいのでしょうか。 分かる方、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAによる検索処理?
Excelで以下の例のように、A列・B列に入力されているとします。A列を検索して、C列にB列の値を返す式を考えてますが、さっぱりわかりません。VBAとかも正直素人ですが、サンプルもしくは考え方を教えていただければと思います。以下の処理内容です。 ・AXセルが「B」であった場合、次のセル(A(X+1))を検索し、次が空白になるまで検索し、空白になる前の最後の行のB列の値をCXセルに返す。該当しない場合は空白のまま 下記の例ですと3行目、8行目のB列の値を2・3、6-8行目のC列のセルに返すことになります。よろしくお願いいたします。 (処理前) ___A__B__C ------------- 1 2__B__2 3__B__3 4______4 5______5 6__B__6 7__B__7 8__B__8 9______9 (処理後) ___A__B__C ------------- 1 2__B__2__3 3__B__3__3 4______4 5______5 6__B__6__8 7__B__7__8 8__B__8__8 9______9
- ベストアンサー
- その他(プログラミング・開発)
- VBA
エクセルVBAについて教えてください。 シート1 A列 B列 C列 D列 E列 F列 ・・・ 商品A 商品B 商品C 商品D・・・ 日付 名前(1) 3 2 1 日付 名前(2) 1 3 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ シート2 A列 B列 C列 D列 E列 日付 名前(1) 商品A 3 商品C 2 商品D 1 日付 名前(2) 商品B 1 商品C 3 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 上記のような、エクセルで作ったシート1があります。 これを、シート2のようにコピーしたいと思っています。 商品は20列あり、数字が入っている列と入っていない列があります。 数字が入っている列の商品と数字をコピーして、すべてコピーが 終わったら次の行のコピーしていく。 行は100ほどあります。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
回答ありがとうございます。 これでも実行可能でした、ありがとうございます