• ベストアンサー

エクセル関数等で出来ますか?

エクセルでA行に数値、 B行以降にA行の数値分、値が入力されています。 A B C D E 1 0 2 4 a b f d 3 2 g l 4 1 s A行の数値分、その行以下に行を挿入し、 B行以降の値を入力する方法はないでしょうか?  A B C D E 1 0 2 4 a b f d 3 a 4 b 5 f 6 d 7 2 g l 8 g 9 l 101 s 11s 宜しくお願いします。

  • oan
  • お礼率85% (24/28)

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

  • ベストアンサー
  • jindon
  • ベストアンサー率43% (50/116)
回答No.1

関数では無理があると思うので、VBAで 下のコードをコピーして、エクセル画面のメニューバーの「ファイル」の左隣のエクセルアイコンを右クリックして、「コードの表示」を選択してVBEを起動する。 右側の空白に貼り付けして「×」をクリックしてエクセル画面の戻り、ツール→マクロ→マクロ→「ThisWorkbook.Transpose_NoRow」を選択して実行。 Sub Transpose_NoRow() Dim i As Integer, x As Variant With ActiveSheet i = 1 Do While .Cells(i, 1).Value <> "" x = .Cells(i, 1).Value If IsNumeric(x) = True And x > 0 Then .Rows(i + 1 & ":" & i + x).Insert .Cells(i, 2).Resize(1, x).Copy .Cells(i + 1, 1).PasteSpecial Transpose:=True i = i + x + 1 Else i = i + 1 End If Loop Application.CutCopyMode = False End With End Sub

oan
質問者

お礼

回答ありがとうございます。 すごいですねーVBAって いろいろなことが出来るのですね。 コードの内容はまったく解かりませんが出来ました。 VBAを勉強したいと思います。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ユーザー関数を作って、やっと下記のところまで持っていった。本当は全てVBAでやりたい。ユーザー関数を作ったので、一部VBA利用と言うところか。 (例データ) A1:F7 1 4 a b c d 2 e f 3 g h I 2 j k 1 l 5 m n o p q A1の1は便宜上必要。 (関数式)どこでも空き列で良いが、本例ではG列にした。 G1に=SUM($A$1:A1) G1をG7まで複写する。累計件数がでます。 1 5 7 10 12 13 18 (ユーザー関数)aa()を定義。準備の道具的な関数。 Sheet1のA列の何行目を参照すれば良いかを割だし。 Function aa(a) Dim sh1 As Worksheet Set sh1 = Worksheets("sheet1") d = sh1.Range("A65356").End(xlUp).Row r = a.Row For i = 1 To d If (r > sh1.Cells(i, "G")) And (r <= sh1.Cells(i + 1, "G")) Then aa = i + 1 Exit Function End If Next i End Function (ユーザー関数)bb()を定義。準備の道具的な関数。 Sheet1のB列以右の何列目を参照すれば良いかを割だし。 Function bb(a) Dim sh1 As Worksheet Set sh1 = Worksheets("sheet1") d = sh1.Range("A65356").End(xlUp).Row r = a.Row For i = 1 To d If (r > sh1.Cells(i, "G")) And (r <= sh1.Cells(i + 1, "G")) Then bb = r - sh1.Cells(i, "G") Exit Function End If Next i End Function (データを採ってくる関数式) Sheet2のA2に=INDEX(Sheet1!$B$1:$F$7,aa(A2),bb(A2)) といれ、A18まで複写。 (結果)A2のaからA18のqまで入る。 (注) ・式を複写した下の方の行はエラー表示を出さなくする件は略 ・間に4 a b c d 等を挟む件は略させていただいた。済みません質問条件 違反です。 ・上記ワーク列をG列にしましたが、X列に例えば設定したら、上記VBAの"G"を(5箇所を)全て"X"に変えて下さい。 ●上記がややこしいと感じられたら、こう言うタイプの問題は、関数式による解決に向いてないことを悟ってください。関数式に拘る回答者が多いので、参考までにやって見ました。

oan
質問者

お礼

回答ありがとうございます。 関数であればもしかして理解できると 安易に考えたのですがまったく まとはずれだったようです。 回答者様のおっしゃるように 向いてないということを悟りました。 丁寧にありがとうございます。 VBAを勉強したいと思います。

関連するQ&A

  • EXCEL

    A-B-C-D-E-F-G 1-A-W-A-1-B- 2-B-A-N-2-C- 3-C-K-A-3-B- 4-D-A-I-4-E- 5-E-R-X-5-A- 例えば,エクセルで表のようになっている場合に, 列AにF1の値(表の場合は文字B)で検索をかけ,検索に該当した行(表の場合では行2)の列Dの値をG1に表示する方法はあるでしょうか?? 簡単に言うと,列Gに自動的にFに対応するDの数値を入力したいのです.自動的に列Gを下の表のようにすることは可能でしょうか? A-B-C-D-E-F-G 1-A-W-A-1-B-2 2-B-A-N-2-C-3 3-C-K-A-3-B-2 4-D-A-I-4-E-5 5-E-R-X-5-A-4 投稿すると文字がずれてしまって表が見難くてすいません. どなたか,ご教授よろしくお願いします.

  • エクセルの関数を教えてください。

    セルHにIFとANDを使って下記内容の関数式を入力したいです。 セルAからセルF内すべてに数値が入っていたらセルFを返す、 セルFが空欄ならばセルEの数値を返す、 セルEも空欄ならばDの値を、 Dも空欄ならばCの値を、Cも空欄ならばBの数値を、 Bも空欄ならばAの数値を返し、 Aも空欄(つまりAからF内に数値なし)ならばスペースを返す。 わかる方、教えてください。 よろしくお願いします。

  • エクセル関数について

    エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。

  • エクセルのMATCH関数について

    エクセルのMATCH関数についての質問ですが、どうしてもエラーが表示され悩んでいます。どうか教えていただければと思います。 たとえば下記のような場合なぜかエラーが発生してしまいますがどうしてでしょうか?      A列   B列   C列   D列   E列   F列 1行              A     B    A+B  戻り値 2行    2.0        1.0    1.2   2.2   2 3行    2.2        0.9    1.1   2.0   1 4行    2.4        1.1    1.3   2.4   #N/A 5行    2.6        1.0    1.4   2.4   3 使用している関数は、 E列2行 =C2+D2  F列2行 =MATCH(E2,$A2:$A5,0) E列3行 =C3+D3  F列3行 =MATCH(E3,$A2:$A5,0) E列4行 =C4+D4  F列4行 =MATCH(E4,$A2:$A5,0) E列5行 =C5+D5  F列5行 =MATCH(E5,$A2:$A5,0) です。ここでどうしても、F列4行にエラー値(#N/A)が発生してしまいます。どうしてでしょうか? E列4行とE列5行は同じ値にもかかわらず戻り値が違うのはどうしてでしょうか? また、不思議なことにE列4行に手入力で2.4の値を入力した場合は戻り値は3となり、正しい値を表示します。どうしてでしょうか? 以上、よろしくお願いします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセルにて複数セルの並び替え

    こんにちは、エクセルについて教えてください。列はA~Hまで、行は1~200行ほどに値が入っています。 例えばValueが以下のようだとします。 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 ... これらのValueを、別のSheetに以下のように並び替えたいのですが、 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 A3 B3 ...と、これがA200~H200の行分まで。なのでPaste後は800行になります。どうにかマクロか何かで簡単に 出来ないかと思い、どなたかご教授いただければと思います、よろしくお願いします!

  • エクセル関数について再質問

    再度質問します。よろしくお願いします。ちなみに、エクセル2007です。 セルA1に10、B1に11、C1に12、D1に13、E1に100、A2に14、B2に15、C2に16、D2に17、E2に200、同様にA3に18、A4に22、E3に300、E4に400と、値が入っています。(この値は、その都度変わります)、そして、セルA10に=A1、B10に=B1、C10に=C1、D10に=D1、E10に=E1、・・・・      D13に=D4,E13に=E4と入力しています。 このとき、10,11,12,13行のE10,E11,E12,E13の値を優先キーとして、降順でセルA20~に10~13行の値だけを自動的に移したいのですが。 今度は分かってもらえましたかね?・・・・・・・ よろしくお願いします。

  • 【関数】エクセルでの時間の計算

    いつもお世話になっております。 エクセルでの時間の計算に関する質問です。 下記のような30行ぐらいの表があり、A,B,C,D列は手打ち、E,F,G列は関数が入力されています。 この場合D2は空白ですが、両方に15ずつ入力されている場合もあります。  A  B  C D    E     F        G 8:00 8:30 30 _ =(B2-A2)*24 =(C2+D2)/60 =IF(E2=F2,"〇","×") 結果、判定をしたいG列が〇になったり×になったりしますが、それがなぜなのか教えてください。

  • エクセルの関数について教えて下さい

    現在ある表を元に、見積書を作っています。 すごい効率が悪く、困っています。 A1~G3に表があります。(実際にはもっと多いです) 1行目に商品名 2行目に金額 3行目に個数 G3 に合計 1・2行目は、元々商品名・金額が入っており 3行目に個数を入れていきます。 G3に合計が入るようにしています。 B2、350円  C2、320円  D2、400円  E2、500円  F2、550円  G2 B3、 1    C3、      D3、 1    E3、       F3、      G3、750円  (現在のG3に入っている数式) =F3*F2+E3*E2+D3*D2+C3*C2+B3*B2 項目が多い為、数式がすごい事になっています。 もっといい方法はないでしょうか? わかる方おられましたら、教えて頂けませんか? よろしくお願いします。

  • エクセル関数の自動表示について

    自動表示についてご質問いたします。 シート1 (3月入力時)       A列  B列  C列  D列  E列  F列  G列  H列 1行目  1月   2  10  11  12  30  31  33 2行目  2月   1   2   5   8   9  10  48 3行目  3月   3   5  10  11  30  31  32 4行目  4月   こういうシート1の表があったとします。 シート1で3月入力した時点で、シート2では以下の表があったとします。        A列  B列  C列  D列  E列  F列  G列   1行目    3   5  10  11  30  31  32 と、自動で表示され。 4月(シート1)に数値を入力すれば、シート2の数値が最新数値に自動で入れ替わる・・・と、いう関数を作りたいのですが、いい関数ありますでしょうか? この場合、シート1ではB列~H列の数字の個数は固定(今回は7個)であり、毎回ランダムで数字が入力されていきます。 これをシート2の1行目、A列~G列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;

専門家に質問してみよう