- ベストアンサー
入力した値の周りの数字を出力する方法
- 入力した値を中心にして周囲の数字を出力する方法について教えてください。
- 5×6のセル内にランダムに重複を含んだ数字が格納されており、指定した値の周囲の数字を出力する方法を教えてください。
- エクセル2010を使用し、5×6のセル内にランダムな数字が重複を含んで格納されています。特定の入力値に対して、その周囲の数字を出力する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
変数宣言やエラー処理を行っていない手抜き版です。 A6:F6およびG2:G6が空白である必要が有ります。 Sub Sample() sDat = "" '出力先をクリア Range(Range("I1"), Range("I1").End(xlToRight)).ClearContents nTarget = Range("G1").Value '入力値 For Each c In Range("A1:F5").Cells If c.Value = nTarget Then '範囲内に入力値が見つかったら周囲の値をカンマ区切りの文字列として取得 sDat = sDat & fGet(c.Row, c.Column, nTarget) End If Next '重複の無い「周囲の値」を作る Set sDic = CreateObject("Scripting.Dictionary") sDataSplit = Split(sDat, ",") For i = 0 To UBound(sDataSplit) sDic(sDataSplit(i)) = 1 Next i 'I1から右に貼り付け sPasteData = sDic.keys Range(Range("I1"), Cells(1, 7 + sDic.Count)) = sDic.keys End Sub Function fGet(nRow, nCol, nTarget) As String nGrow = WorksheetFunction.Max(nRow - 1, 1) nGCol = WorksheetFunction.Max(nCol - 1, 1) fGet = "" '入力値の周囲の値のうち、空や入力値と同一のものを除いてカンマ区切りの文字列化 For Each c In Range(Cells(nGrow, nGCol), Cells(nRow + 1, nCol + 1)).Value If (IsEmpty(c) = False) And (c <> nTarget) Then fGet = fGet & c & "," End If Next End Function
その他の回答 (4)
- SI299792
- ベストアンサー率47% (773/1617)
〇【5×6のセル】 ABCDE となっていますが、データは 05 09 21 25 38 41 と6個あります。 〇【6×6のセル】ABCDEF の間違いでは? 〇【入力ゾーン】H 〇【出力ゾーン】JKLMN~Z の間違いかもしれません。 それとも、ランダム数字と入力ゾーンにはスペースがないのですか? 又は、データの方が間違っているのでしょうか。
- mt2015
- ベストアンサー率49% (258/524)
訂正です。 ANo.3の以下の一行は不要でした(あっても無駄なだけで悪さはしません)。 sPasteData = sDic.keys
- mt2015
- ベストアンサー率49% (258/524)
5×6セルの中に入力値と一致する値が複数隣接して有った場合、「周りにある数字」が重複しますがそれはどうしたいのでしょう? 重複して表示?それとも重複させない? 以下の例で入力値が8だった場合、1,7,13,14,15,8,3,2,2,8,14,15,16,10,4,3と表示したいのか、 1,7,13,14,15,8,3,2,16,10,4 なのか、はたまた入力値と同じ8は除くのか。 1 2 3 4 5 6 7 8 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 どちらにしてもVBAでやる事になりますが良いんでしょうか?
補足
補足です。 周りの数字が重複したら、重複削除して出力します。
- SI299792
- ベストアンサー率47% (773/1617)
どう考えても、マクロでないとできません。 マクロでもいいかどうか、 【5×6のセル】【入力ゾーン】【出力ゾーン】がどの位置にあるのか。(別シートにあるならシート名も)書いて下さい。
補足
補足です。 【5×6のセル】【入力ゾーン】【出力ゾーン】は全て同じシートにあります。 〇【5×6のセル】 ABCDE 1 2 3 4 5 6 〇【入力ゾーン】 G 1 〇【出力ゾーン】 IJKLMN~Z 1 2 3 4 5 6
お礼
さっそくのご回答いただきありがとうございました。 付けて頂いた結果と同じになりました。 ありがとうございました。