- ベストアンサー
エクセル関数等で出来ますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数では無理があると思うので、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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17068)
ユーザー関数を作って、やっと下記のところまで持っていった。本当は全て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"に変えて下さい。 ●上記がややこしいと感じられたら、こう言うタイプの問題は、関数式による解決に向いてないことを悟ってください。関数式に拘る回答者が多いので、参考までにやって見ました。
お礼
回答ありがとうございます。 関数であればもしかして理解できると 安易に考えたのですがまったく まとはずれだったようです。 回答者様のおっしゃるように 向いてないということを悟りました。 丁寧にありがとうございます。 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が加算されるようにしたいのですが、教えてください。
- 締切済み
- その他MS Office製品
- エクセルの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列が〇になったり×になったりしますが、それがなぜなのか教えてください。
- ベストアンサー
- Excel(エクセル)
- エクセルの関数について教えて下さい
現在ある表を元に、見積書を作っています。 すごい効率が悪く、困っています。 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列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;
- ベストアンサー
- オフィス系ソフト
お礼
回答ありがとうございます。 すごいですねーVBAって いろいろなことが出来るのですね。 コードの内容はまったく解かりませんが出来ました。 VBAを勉強したいと思います。