• ベストアンサー
  • 困ってます

エクセルのマクロで"~"を用いた数字の連番

エクセルのマクロで"~"を用いた数字の連番 について、ちょっと困っています。 以下のように、セルに入力があります。 A1:0 A2:1 A3:2 A4:3 A5:4 A6:5 A7:6 A8:7 A9:8 A10:9 A11:10 次に、B1~B11の任意のセルに "無" もしくは "有" の文字を入力し、 B列に"有"の文字が入力されているA列の数字を"~"を用いて連番にしたい。 ただし、「0」は独立した値とし、「B1:有、B2:有」の場合、「0~1」ではなく、 「0,1」とカンマ区切りとする。 (例) A1:0/B1:有 A2:1/B2:有 A3:2/B3:無 A4:3/B4:有 A5:4/B5:有 A6:5/B6:有 A7:6/B7:無 A8:7/B8:無 A9:8/B9:有 A10:9/B10:無 A11:10/B11:無 ⇒ 『 A12 = 0,1,3~5,8 』としたい。 マクロでご教授いただけると幸いです。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数11
  • 閲覧数369
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.10
  • Wendy02
  • ベストアンサー率57% (3570/6232)

#5,#7の回答者です。 >また実際に作成しているものは(例)とは少し異なっております。 >「行」は2行目以降でも応用できたのですが、「列」がうまくいきません。 >どの部分を変えればよいのか、ご教授いただけると幸いです。 異なっているなら、異なっている部分を書かないと分からないのです。もう少し、回答者の読んでいる側のことをもう少し考えてください。隣り合った列ではないなら、ないと書いてください。 それに、少なくとも、私は、ご質問者さんにコードの内容を理解してもらうつもりで書いていませんし、定数値以外の編集を望んでいません。そんなことをしていたら、私たち含めて永遠に、プログラムなど分かることはありません。 #5の現在のコードは、隣り合った列のものに対してのみ有効になっています。だから、離れた場所にある場合は、引数を二つにしなければなりません。 第1列が、A20:A30, 第2列が、E20:E30 =Linkage(A20:A30,E20:E30) なお、範囲がシートが別々でも可能です。 '// Public Function Linkage(rng1 As Range, rng2 As Range) '各々の2列を選択 Dim Ar As Variant Dim i As Long, j As Long Dim buf As String Dim flg As Integer ReDim Ar(rng1.Rows.Count - 1) Ar = Application.Transpose(rng1.Columns(1)) For i = LBound(Ar) To UBound(Ar)  If rng2.Cells(i, 1).Value Like "無*" Then   Ar(i) = Empty  End If Next For j = LBound(Ar) To UBound(Ar) - 1  If Not IsEmpty(Ar(j)) And buf = "" Then   buf = Ar(j)   If CStr(Ar(j)) = "0" Then    flg = -1   End If  ElseIf flg = -1 And buf <> "" And Not IsEmpty(Ar(j)) Then   buf = buf & "," & Ar(j)   flg = 0  ElseIf Not IsEmpty(Ar(j)) And IsEmpty(Ar(j + 1)) Then   If flg > 1 Then    buf = buf & "~" & Ar(j)   Else    buf = buf & "," & Ar(j)   End If   flg = 0  ElseIf Not IsEmpty(Ar(j)) Then   If flg = 0 Then    buf = buf & "," & Ar(j)   End If  End If  If Not IsEmpty(Ar(j)) And Not IsEmpty(Ar(j + 1)) Then   flg = flg + 1  End If Next If UBound(Ar) = j And Not IsEmpty(Ar(j)) Then  If flg < 2 Then   buf = buf & "," & Ar(j)  ElseIf flg > 1 Then   buf = buf & "~" & Ar(j)  End If End If Linkage = buf End Function 'マクロに取り付けるなら、このようになります。 Sub Test1r()   Range("A12").Value = Linkage(Range("A20:A30"),Range("E20:E30")) End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルの並び替えで順番どうりにならない

    エクセル2003です。 並び替えでA列を対象にして 以下のように並び替えたいです。 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 ですが並び替えを実行すると A1 A10 A11 A12 A13 A2 A3 A4 A5 A6 A7 A8 A9 B1 B10 B11 B12 B2 B3 B4 B5 B6 B7 B8 B9 となってしまいます どのような方法がありますか。 よろしくお願いします。

  • EXCEL 並び替え

    a1 a4 a7 a10 a13 a16 a19 a2 a5 a8 a11 a14 a17 a20 a3 a6 a9 a12 a15 a18 a21 b1 b4 b7 b10 b13 b16 b19 b2 b5 b8 b11 b14 b17 b20 b3 a6 b9 b12 b15 b18 b21 上記のような3x7で一セットのかたまりのデータ(実際は文字列がはいっています)を下記のように簡単に横に並び替えるにはどうしたらよいでしょうか。各このセットが1枚のエクセルに最大30セットあり、EXCELは20ファイル程あるので手早くならびかえる方法を探しています。 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20 b21

  • エクセル 2010 マクロ ハイフン 並べ替え

    途中にハイフンが入る文字列の並べ替えをマクロを使用して教えてください。 A2からA列に入力されている最下位セルまでを見つけて(今回はA10まで) A2・・・2 A3・・・5-8 A4・・・1 A5・・・3-4 A6・・・1-2 A7・・・10-11 A8・・・12-13 A9・・・10 A10・・9 上記の並びを下記のようにしたいのですが出来ますでしょうか? A2・・・1 A3・・・1-2 A4・・・2 A5・・・3-4 A6・・・5-8 A7・・・9 A8・・・10 A9・・・10-11 A10・・12-13 B列以降にはデータが入っています。 宜しくお願い致します。

その他の回答 (10)

  • 回答No.11
  • layy
  • ベストアンサー率23% (292/1222)

質問例回答例と実際のセル位置や値が違うのは想定の範囲です。ロジック、考え方さえ間違えなければ解決に向かうと思います。そのまま稼動するような完全なるものは機密公開になりかねないので制限あります。だれもが閲覧する場ですし。 2列目B列の「有」「無」文字を判断している箇所を追跡して下さい。初期値から変わってないまま、?行目2列目B列を意味しているはずです。 5列目が実際の列としたら2+3列と流動化せても何か出来そうです。

共感・感謝の気持ちを伝えよう!

  • 回答No.9
  • imogasi
  • ベストアンサー率27% (4558/16318)

色々なやりかたがあると思うし、この手の問題は複雑になり勝ち。下記も結構複雑ですが他と比べてどうでしょうか。 例データ A1:A21に 有 有 無 有 無 有 無 有 無 無 有 無 無 有 無 有 無 有 有 無 有 ーー コード Sub test01() '--第1行のみ特別扱い If Cells(1, "A") = "有" Then f = "0," Else f = "" End If '--第2行以降を「有」だけを配列に入れる Dim s(100) j = 1 '1からスタート d = Range("A65536").End(xlUp).Row '最下行を取得 MsgBox d For i = 2 To d If Cells(i, "A") = "有" Then s(j) = i - 1 j = j + 1 End If Next i dsuu = j - 1 '有の数を保存 MsgBox dsuu '---その配列sについて t = "" '文字列初期化、クリア。 '--1,2番目は必ずセットする特別扱い t = t & s(1) & "," & s(2) & "," '--2番目以降 ren = 0 '初期状態では連なりなしでスタート For j = 3 To dsuu If s(j) = s(j - 1) + 1 Then '整数的に連続なら=直前と同じなら '--tの最後の「,」を「~」に変える Mid(t, Len(t), 1) = "~" ren = ren + 1 '連の数を1増やす Else '--不連続なら Select Case ren '--renの数=0なら Case ren = 0 '--自分+「,」を入れる t = t & s(j) & "," '--renの数=1なら Case ren = 1 '--自分+「,」を入れる t = t & s(j) & "," Case Else '--renの数>=2なら,終わり数に直前を加え、スタートに自分+「,」を入れる t = t & s(j - 1) & "," & s(j) & "," End Select ren = 0 'renを初期状態に End If Next j '--後じまい Select Case ren Case 0 t = Left(t, Len(t) - 1) ''を除く Case 1 t = t & s(dsuu) '最後の数を追加 Case Is >= 2 t = t & s(dsuu) '最後の数を追加 End Select '--セルにセット Cells(23, "E") = f & t End Sub ーーーーー 結果 C23に 0,1,3,5,7,10,13,15,17~18,20 A列の「有」の連なりを色々変えてテストしてみてください。

共感・感謝の気持ちを伝えよう!

  • 回答No.8
  • layy
  • ベストアンサー率23% (292/1222)

>可能性あり こういう記載、回答者さんお願いしますね、という意味だったら丸投げです。 動作が怪しい点、確認しておかないといけない点は (対応をどっちがやるかは別として) 今の段階で明確にしなければなりません。 特に、説明漏れがあって、 今までの回答があまり使えなくて再検討になるようなことあれば それはあとになって、質問者自身で修正できるようにがんばるしかないのです。 そうならないためにも、 質問投稿して待っている状態かもしれませんが、 質問者自身においても今の段階でいろいろ習得し考えて欲しいです。 「この処理は何?」「こんな仕組みでできるんだ」「このケースでも大丈夫だな」 「こんなのは大丈夫だろうか」等考えてもらいたいので投稿しました。 最終的な動作確認は回答者でなくて質問者です。 支援者はいっぱいいます。がんばりましょう。 >・2連続の場合 → "," >・3連続以上の場合 → "~" 対応箇所がわからなければズバリ説明をもらって 質問者にて修正・確認できれば、と思います。 そういう(自分で考えて修正をする)やり方が上達しやすいです。

共感・感謝の気持ちを伝えよう!

  • 回答No.7
  • Wendy02
  • ベストアンサー率57% (3570/6232)

#5の回答者です。 >・2連続の場合 → "," >・3連続以上の場合 → "~" これは、すでに出来ているはずです。 一応、元の質問内容に対して、私の書いた内容は、想定済みだと思いましたが、何か問題でもあるのですか?こちらの作った、ユーザー定義関数を標準モジュールに貼り付けて、A12に、数式を貼りつければ済むと思いますし、マクロにも付けられます。しかし、そのままにされると、何かとても気持ち悪いですね。 それと、#6さんへの補足の内容は、最初の質問要件が変わってくるし、それが、どういう結果になるか書いていただかないと、こちらとしては、見当が付きません。すべて0だったら、0だけにするのか、言い換えると、数字にダブりがある場合は、編成しなおして、ユニーク番号だけ出していくのか、「可能性あり」という意味は、「解答できる可能性はあり」という回答にしかなりません。任意の数字で、順不同で数列になっていなかったり、ダブりや飛び番がある場合など、可能性があるものに対して、具体的な例を示し、望む戻り値を示していただかないと、現実には不可能です。本来、質問要件が、最初の内容と変わって引き伸ばされると、解答に至るのは極めて難しくなっていきます。 なお、基本的には、常識的な数値範囲(Integer型の範囲-整数に限る)で使われるものとして作ればよいとしています。 私のユーザー定義関数の結果 *** (1) 「有」がないケース    "" ←見えない (2) 「0」だけのケースで、「有」だけの場合    0,0~0 (3) 「1」だけのケースで、「有」だけの場合    1~1 (4) 「10」だけのケースで、「有」だけの場合    10~10 (5) 「全部有」のケースで、0~10まである    0,1~10 #4の補足に対しては、   0,1,3,4,7~9 とすでになっています。ですから、質問の原則は外していないはずです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

Wendy02様 私もマクロ等にあまり慣れておらず、また実際に作成しているものは(例)とは少し異なっております。 他の方も含め、ご回答いただいたコードを解析して、応用するのに手間取っており、お礼が遅くなってしまいました。 申し訳ございませんでした。 私が不慣れなせいもあり、どうしても応用できない部分があります。 ご回答のコードは行/列共に1行/列目から始まっていますが、実際は行も列も1行/列目ではありません。 「行」は2行目以降でも応用できたのですが、「列」がうまくいきません。 どの部分を変えればよいのか、ご教授いただけると幸いです。 よろしくお願いします。

  • 回答No.6
  • layy
  • ベストアンサー率23% (292/1222)

補足) 念のため、 下記のようにいろんなケースを提示し、確認しておいてください。 「有」がないケース、 「0」だけのケース、 「1」だけのケース、 「11」だけのケース、 「全部有」のケース、等。 11までありますが、 範囲が変わって0~9までになったときのケースを想定し、 これもどこをどう変えたらよいのか、変えなくても良いのか等。

共感・感謝の気持ちを伝えよう!

質問者からの補足

補足、ありがとうございます。 (1) 「有」がないケース  → B列が「有」のときのA列の数字のみ表示   (B列に「無」が入力されない空欄「""」の場合もあり・・・「無」or「""」) (2) 「0」だけのケース   → 可能性あり (3) 「1」だけのケース   → 可能性あり (4) 「10」だけのケース   → 可能性あり (5) 「全部有」のケース   → 可能性あり (6) A列の数字の範囲   → 「0」~「10」です(「10」を超えることはありません) よろしくお願いいたします。

  • 回答No.5
  • Wendy02
  • ベストアンサー率57% (3570/6232)

同じような質問が最近ありましたので、隣り合った数字、例えば、1と2 の場合は、~ でつなげず、「,」で区切るというリクエストがありましたので、同じようにしました。 例:  0,1,2,4~10 ←隣り合う数字だけの場合は、1~2 とはならず、1,2 になります。 それが、違うようでしたら、ご指摘ください。一部を変えるだけです。 また、最初の0のない場合も想定しました。 A12 に以下のように置いてください。 =Linkage(A1:B11) '//標準モジュール Public Function Linkage(rng As Range) '2列を選択 Dim Ar As Variant Dim i As Long, j As Long Dim buf As String Dim flg As Integer ReDim Ar(rng.Rows.Count - 1) Ar = Application.Transpose(rng.Columns(1)) For i = LBound(Ar) To UBound(Ar)  If rng.Cells(i, 2).Value Like "無*" Then   Ar(i) = Empty  End If Next For j = LBound(Ar) To UBound(Ar) - 1  If Not IsEmpty(Ar(j)) And buf = "" Then   buf = Ar(j)   If CStr(Ar(j)) = "0" Then    flg = -1   End If  ElseIf flg = -1 And buf <> "" And Not IsEmpty(Ar(j)) Then   buf = buf & "," & Ar(j)   flg = 0  ElseIf Not IsEmpty(Ar(j)) And IsEmpty(Ar(j + 1)) Then   If flg > 1 Then    buf = buf & "~" & Ar(j)   Else    buf = buf & "," & Ar(j)   End If   flg = 0  ElseIf Not IsEmpty(Ar(j)) Then   If flg = 0 Then    buf = buf & "," & Ar(j)   End If  End If  If Not IsEmpty(Ar(j)) And Not IsEmpty(Ar(j + 1)) Then   flg = flg + 1  End If Next If UBound(Ar) = j And Not IsEmpty(Ar(j)) Then  If flg < 2 Then '* ~の付ける条件   buf = buf & "," & Ar(j)  ElseIf flg > 1 Then   buf = buf & "~" & Ar(j)  End If End If Linkage = buf End Function 'マクロに取り付けるなら、このようになります。 Sub Test1()   Range("A12").Value = Linkage(Range("A1:B11")) '範囲を入れる End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.4

Sub test() Dim r As Long, rHead As Long, rTail As Long If Cells(1, "B").Value = "有" Then Cells(12, "A").Value = Cells(1, "A").Value For r = 2 To 12 If Cells(r, "B").Value = "有" Then If rHead = 0 Then rHead = Cells(r, "A").Value Else rTail = Cells(r, "A").Value End If Else If rHead > 0 Then If rTail > 0 Then With Cells(12, "A") .Value = .Value & "," & rHead & "~" & rTail End With Else With Cells(12, "A") .Value = .Value & "," & rHead End With End If rHead = 0 rTail = 0 End If End If Next r End Sub

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 希望の結果が得られました。 ちなみにですが、数字が ・2連続の場合 → "," ・3連続以上の場合 → "~" で接続したい場合は、どのようなコードになるのでしょうか? (例) A1:0/B1:有 A2:1/B2:有 A3:2/B3:無 A4:3/B4:有 A5:4/B5:有 A6:5/B6:無 A7:6/B7:無 A8:7/B8:有 A9:8/B9:有 A10:9/B10:有 A11:10/B11:無 ⇒ 『 A12 = 0,1,3,4,7~9 』としたい。 お願いばかりで恐縮です。 よろしくお願いいたします。

  • 回答No.3
  • TNK787
  • ベストアンサー率17% (25/141)

Sub test() Dim i As Long Dim atai As Variant For i = 1 To 11 If Cells(i, 2).Value = "有" Then If atai = "" Then atai = Cells(i, 1).Value Else If atai = 0 Then atai = atai & "," & Cells(i, 1).Value Else atai = atai & "~" & Cells(i, 1).Value End If End If End If Next Cells(12, 1).Value = atai End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • TNK787
  • ベストアンサー率17% (25/141)

??? ~って単に記載を省略しただけではないのですか? ちょっと意味がわかりません

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • TNK787
  • ベストアンサー率17% (25/141)

Sub test() Dim i As Long Dim atai As String For i = 1 To 11 If Cells(i, 2).Value = "有" Then If atai = "" Then atai = Cells(i, 1).Value Else atai = atai & "," & Cells(i, 1).Value End If End If Next Cells(12, 1).Value = atai End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速回答いただき、ありがとうございます。 早速試してみましたが(例)の結果だと、 「0,1,3,4,5,8」 となってしまいます。 0と1以外は"~"を使った連番にしたいので、 「0,1,3~5,8」 となって欲しいです。 また、よろしくお願いいたします。

関連するQ&A

  • エクセルのマクロの事?

    エクセルで A1あ、B1い、C1う A2え、B2お、C2か A3き、B3く、C3け 以下続く このようになっている物を A1あ A2い A3う A4え A5お A6か A7き A8く A9け こんな感じにマクロを使って変更したいのですが、どのようにすればいいでしょうか?

  • Excel n行毎の合計数値

    Excelで2行毎、できればn行毎に合計値を求めるセルを作りたいのです。 A1:A10に{1,2,3,,,,}と値が入っているとして、B1から B1=A1+A2 B2=A3+A4 B3=A5+A6 というふうになり、B1=3,B2=7,B3=11,,,と1行毎に合計する範囲がズレていくような列を作るには どうすればいいでしょうか? C1=A1+A2+A3 C2=A4+A5+A6 C3=A7+A8+A9 となっていくような列を作る必要も出てきそうなので、 n行合計ずつ以外でも出来る方法をお願いします。

  • エクセルのマクロ

    A列とB列に以下のような感じでデータが入ってます。 A列 A1  1 A2  あ A3  い A4  う A5  え A6  2 A7  お A8  か A9  3 A10  さ A11  し A11  す B列 B1   1 B2   a B2  2 B3  b B4  c B5  3 B6  d B7  e 両列に共通しているのは数字の1から始まり、1の後に何らかのデータが続いた後に2がきて、また何らかのデータが続いた後に3がきます。 そんな感じで数値が増えて両列とも500(行ではなく数値が)まであります。 この二つの列のデータを合わせたものをC列に表したいのですが。 その規則ですが。まず1がきて、その後にB列の1から下のデータ(2の前まで)がきて、次にA列の1から下のデータ(2の前まで)がきます。2以下も同様になります。 C1  1 C2  a C3  あ C4  い C5  う C6  え C7  2 C8  b C9  c C10  お C11  か C12  3 C13  d C14  e C15  さ C16  し C17  す C列のデータを求めるマクロを教えてもらいたいのですが。 よろしくお願いします。

  • 並び替え

    お願いします。 エクセルで例えばA1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11を並び替えるとA1,A10,A11,A2,,,,,,,となりますよね。そうではなくA1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11と並ぶようにはできないのでしょうか?

  • エクセルワークシート上で、1、4、7、0、3、6、9、2、5、8を循環させる方法

    私は、エクセルVBA 超初心者のsustainedと言います。 エクセルワークシート上で、 A2=1 A3=4 A4=7 A5=0 A6=3 A7=6 A8=9 A9=2 A10=5 A11=8と予め入力されている状態で、 A1=3と入力するとA2=3 A3=6 A4=9 A5=2 A6=5 A7=8 A8=1 A9=4 A10=7 A11=0 となる様に循環(ソート?)する方法がわからないのですが? 本当に困っています。 補足  1、4、7、0、3、6、9、2、5、8 この数並びのまま A1=3と入力する  |          |  A1=3なので3、6、9、2、5、8、1、4、7、0となる。(A2~A11)              ,A1=5と入力すると5、8、1、4、7、0、3、6、9、2となる。(A2~A11) つまり、1、4、7、0、3、6、9、2、5、8は、10角形の頂点に配置させているとイメージしてくれれば わかり易いと思います。ナンバースの風車と同様に

  • エクセルの関数 反映の仕方

    sheet1のA1→10 A2→11 A3→12 A4→13 A5→14 A6→15 A7→16 A8→17 A9→18 A10→19 sheet2にA1→11 B1→3,A2→14 B2→2,A3→16 B3→3 A4→18 B4→1 とあった場合 Sheet2のB1~B4の数をsheet1の数の横(B列)に反映させたいのですがどうやったら出来るでしょうか? 分かりにくかったら補足しますので宜しくお願いします

  • エクセルシートの票データの置き換えについて、

    エクセルのシートに (A1)から(D50)まで一覧表があり、それぞれ200個のセルに文字が入力されています。 これを別のシートに縦一列に並び替えたいのですが、 A1=(A1) A2=(B1) A3=(C1) A4=(D1) A5=(A2) A6=(B2) A7=(C2) A8=(D2) A9=(A3) A10=(B3)  ・  ・  ・ A199=(C50) A200=(D50) 出来れば簡易言語で、それで無理ならマクロでも結構です。 よろしくお願いします。

  • EXCELのSUM()関数の範囲指定について

    お世話になります。以前に同様の質問がありましたら、その場所を教えて下さって頂いても構いません。 各セルには、以下の項目が入っています。 A列には西暦、B列には台数が入っています。 現在、2004年まで入っていますが、毎年行を増やして行こうと思っています。 開始年に1993、終了年に2000と入力すると、合計欄には、1993~2000年の合計値600が自動的に入ります。このとき、計算式をB3に入れ、VBA(マクロ)は使わない方法を教えて下さい。 SUM(範囲)関数なのですが、この範囲の指定を任意に変更できればと思っていますが、どう指定すればいいのか、見当も付きません。 A1="開始年"  B1=1993 A2="終了年"  B2=2000 A3="合計"   B3=600 A5="西暦[年]" B5="台数" A6=1990    B6=10 A7=1991    B7=20 A8=1992    B8=30 A9=1993    B9=40 A10=1994    B10=50 A11=1995    B11=60 A12=1996    B12=70 A13=1997    B13=80 A14=1998    B14=90 A15=1999    B15=100 A16=2000    B16=110 A17=2001    B17=120 A18=2002    B18=130 A19=2003    B19=140 A20=2004    B20=150 よろしくお願いします。

  • エクセルVBA【かんたんなデータ入力】

    お世話になります。 下記データがランダムに何通りもあるとします。 (1)A1~A11をD列以降横列に入力します。 (2)B1~B11のデータを(1)で作った横列の下に入力します。 またデータはたくさんあり、(2)で入力したデータの下に入力していきます。 (3)データ入力の際B4~B9のデータは10で割り小数点第一位まで出します。 RUNボタンを作り(2)と(3)を実行します。 A1 NO   B1 1 A2 年齢   B2  20 A3 性別   B3 ♂ A4 身長 B4 2000    A5 体重 B5 1000 A6 体脂肪率 B6 101 A7 胸囲 B7 1200 A8 胴囲 B8 1000 A9 視力  B9 1 A10 備考 B10 ニュージーランド A11 備考2 B11 ラグビー 上記のようなVBAを教えて下さい。 言葉足らずな点は補足させて頂きます。 宜しくお願い致します。

  • Excel 2010で複数の空白セルの上のセル参照

    いつもとても助けられています Excel 2010を使用しています 今、A1からA20まで、順番に1, 2, 3,,,,20と数字が入り、B1, B8, B10, B11, B17, B20に、91, 104, 105, 106, 111, 121と数が入っている時に、C8に(B8-B1)/(A8-A1)、C10に(B10-B8)/(A10-A8)、C11に(B11-B10)/(A11-A10)、C17に(B17-B11)/(A17-A11)と自動的に入れられるような関数ができるのかどうかを知りたいと思っています そしてさらに欲を言えば、Aの列が、このような数字ではなく、日付であった場合(たとえばA1が2002/1/1、A8が2002/8/1、A10が2002/10/1といった規則的な増加の場合、あるいはA1が2002/1/1、A8が2002/6/8、A10が2004/7/9というような全く不規則な増加の場合)についても計算ができればうれしいです 要するに、とびとびの数値が入力されている場合の増加速度を求めるような関数です C2からC7のようなセルには、IF(B2="","",●●)で回避できると思っています 何か良い方法はないでしょうか よろしくお願いします